您也可以使用regroup
模板标记按属性分组。从文档:
cities = [
{'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
{'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
{'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
{'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
{'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]
...
{% regroup cities by country as country_list %}
<ul>
{% for country in country_list %}
<li>{{ country.grouper }}
<ul>
{% for city in country.list %}
<li>{{ city.name }}: {{ city.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
看起来像这样:
- 印度
- 孟买:19,000,000
- 加尔各答:15,000,000
- 美国
- 纽约:20,000,000
- 芝加哥:7,000,000
- 日本
QuerySet
我相信它也可以使用。
来源:https : //docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup
编辑:请注意,如果词典列表未按键排序,则该regroup
标签将无法正常运行。它迭代地工作。因此,在将列表(或查询集)传递给regroup
标签之前,请先按石斑鱼的键对列表进行排序。
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))