Django按字段分组结果

时间:2012-09-27 14:36:16

标签: python django django-models django-templates iteration

抱歉没有问题。 假设我们有一个关系模型:

  class Book(models.Model):
     name = models.CharField(max_length=300)
     category = models.ForeignKey(Category)

  class Category(models.Model):
     name = models.CharField(max_length=300)

是否有可能以某种方式对结果进行分组,因此在模板中我们可以得到类似的结果?

<ul>
   {% for category in book_categories%}
              <li> 
                  {{category.name}} 
                   <br/>  
                  {% for book in category%}
                      {{book.name}} , {{book.author}}, etc...
                  {% endfor %} 
             </li>
   {% endfor %}           
</ul>

还是我让事情变得复杂,有更简单的方法来实现这样的html输出?

2 个答案:

答案 0 :(得分:2)

将类别传递给您的模板,然后您就可以执行此类操作

<ul>
   {% for category in categories %}
              <li> 
                  {{category.name}} 
                   <br/>  
                  {% for book in category.book_set.all %}
                      {{book.name}} , {{book.author}}, etc...
                  {% endfor %} 
             </li>
   {% endfor %}           
</ul>

答案 1 :(得分:1)

您只能加载按类别排序的图书,然后在模板中输入以下内容:

<ul>
  {% for book in books %}
    <li>
        {% ifchanged book.category__name %}
            {{ book.category__name }}
        {% endifchanged %}

        <br/>  
        {{book.name}} , {{book.author}}, etc...
    </li>
  {% endfor %}          
</ul>