2

对不起菜鸟问题。假设我们有一个具有关系的模型:

  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 输出?

4

2 回答 2

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>
于 2012-09-27T14:39:09.330 回答
1

您可以仅加载按类别排序的书籍,然后在模板中包含如下内容:

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

        <br/>  
        {{book.name}} , {{book.author}}, etc...
    </li>
  {% endfor %}          
</ul>
于 2012-09-27T14:42:41.030 回答