2012-07-06 52 views
0

我試圖顯示按類別分組的成分列表。我儘可能地顯示了類別ID列表,但我似乎無法繼續前進。這裏是我的設置,非常感謝任何幫助。如何使用外鍵在django模板中重新組合

# models.py 
class IngredienceCategory(models.Model): 
    name = models.CharField(max_length=30) 

    def __unicode__(self): 
     return self.name 


class Ingredience(models.Model): 
    name = models.CharField(max_length=30) 
    category = models.ForeignKey(IngredienceCategory, null=True, blank=True) 

    def __unicode__(self): 
     return self.name 


# views.py 
def home(request): 
    ingredients = Ingredience.objects.all() 
    ingrcat = IngredienceCategory.objects.all() 

    return render_to_response('home.html', {'ingredients': ingredients, 'ingrcat': ingrcat,}) 


# home.html template 
<h2>List of items by category:</h2> 
{% regroup ingredients|dictsort:"category_id" by category_id as ingr_by_cats %} 
{% for category in ingr_by_cats %} 
    <p>{{ category.grouper }}</p> 
    <ul> 
     {% for item in ingrcat.list %} 
      <li><a href="#" id="{{ item.id }}">{{ item.name }}</a></li> 
     {% endfor %} 
    </ul> 
{% endfor %} 

什麼我目前得到:

<h2>List of items by category:</h2> 
<p>1</p> 
<ul></ul> 

<p>2</p> 
<ul></ul> 

<p>3</p> 
<ul></ul> 

我想要實現:

<h2>List of items by category:</h2> 
<p>Category A</p> 
<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

<p>Category B/p> 
<ul> 
    <li>Item 4</li> 
    <li>Item 5</li> 
    <li>Item 6</li> 
</ul> 

<p>Category C</p> 
<ul> 
    <li>Item 7</li> 
    <li>Item 8</li> 
    <li>Item 9</li> 
</ul> 

回答

1

你的問題是在這裏:

{% for item in ingrcat.list %} 

你應該有:

{% for item in category.list %} 
+0

謝謝克里斯,解決了我的問題的一半,項目現在正在顯示。我遇到的另一個問題是如何顯示類別名稱而不是類別ID。 – finspin 2012-07-06 19:52:40

+0

按'category'而不是'category_id'重新組合,那麼你的'grouper'將是'Category'的一個實例,你可以像平常一樣訪問它的所有屬性。 – 2012-07-06 20:20:47

+0

謝謝克里斯,那有效! :) – finspin 2012-07-06 20:26:56