2012-07-06 56 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