例如,我有以下模型:
class Author(models.Model):
firstname = models.CharField(max_length=30)
book = models.CharField(max_length=30)
我想让我的模板做一些导致下面的html的内容。因此,对于每个具有相同名字的作者,它会使用具有该名字的作者的所有书籍迭代并填充该列表。
<h3>Author First Name</h3>
<ul>
<li>Book1</li>
<li>Book2</li>
<li>Book3</li>
</ul>
<h3>Author First Name2</h3>
<ul>
<li>Book4</li>
<li>Book9</li>
</ul
我不确定如何构建允许我这样做的Django Queryset。
答案 0 :(得分:0)
您可能需要在视图功能中完成部分工作。
L1 = Author.objects.all().order_by('firstname').values('firstname', 'book')
会返回记录列表。
from itertools import group_by
from operator import itemgetter
group_by(L1, itemgetter('firstname'))
将为您提供每位作者的书籍作者列表。
我们假设您将此list1
传递给您的模板。然后在模板中,您可以执行以下操作:
{% for k, v in list1 %}
<h3>{{ k }}</h3>
<ul>
{% for b in v %}
<li>{{ b }}</li>
{% endfor %}
</ul>
{% endfor %}