Anda juga dapat menggunakan regroup
tag template untuk dikelompokkan berdasarkan atribut. Dari dokumen:
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>
Terlihat seperti ini:
- India
- Mumbai: 19.000.000
- Kalkuta: 15.000.000
- Amerika Serikat
- New York: 20.000.000
- Chicago: 7.000.000
- Jepang
Ini juga berfungsi pada QuerySet
s saya percaya.
sumber: https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup
sunting: perhatikan bahwa regroup
tag tidak berfungsi seperti yang Anda harapkan jika daftar kamus Anda tidak diurutkan kunci. Ini bekerja berulang. Jadi, sortir daftar Anda (atau set kueri) dengan kunci kerapu sebelum meneruskannya ke regroup
tag.
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))