Puoi anche usare il regroup
tag template per raggruppare per attributi. Dai documenti:
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>
Somiglia a questo:
- India
- Mumbai: 19.000.000
- Calcutta: 15.000.000
- Stati Uniti d'America
- New York: 20.000.000
- Chicago: 7.000.000
- Giappone
Funziona anche su QuerySet
s credo.
fonte: https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup
modifica: nota che il regroup
tag non funziona come ti aspetteresti se il tuo elenco di dizionari non è ordinato per chiave. Funziona in modo iterativo. Quindi ordina l'elenco (o il set di query) in base alla chiave del raggruppatore prima di passarlo al regroup
tag.
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))