Python Django分组结果(按字段)

Python Django分组结果(按字段),python,django,django-models,django-templates,iteration,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) 是否有可能以某种方式对结果进行分组,以便在模板中我们可以

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

  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>
    {图书类别中类别的百分比%}
  • {{category.name}
    {%类别中的书籍为%} {{book.name},{{{book.author}}等。。。 {%endfor%}
  • {%endfor%}

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

将类别传递给模板,然后您就可以这样做了

<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>
    {categories%%中的类别为%s}
  • {{category.name}
    {category.book_set.all%}中的书籍的% {{book.name},{{{book.author}}等。。。 {%endfor%}
  • {%endfor%}

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

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

        <br/>  
        {{book.name}} , {{book.author}}, etc...
    </li>
  {% endfor %}          
</ul>
    {书籍中书籍的百分比%}
  • {%ifchanged book.category\uuuu name%} {{book.category\uuuu name} {%endifchanged%}
    {{book.name},{{{book.author}}等。。。
  • {%endfor%}

就是这样!我知道有这么简单的事情)非常感谢!