Sie können das regroupVorlagen-Tag auch zum Gruppieren nach Attributen verwenden. Aus den Dokumenten:
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>
Sieht aus wie das:
- Indien
- Mumbai: 19.000.000
- Kalkutta: 15.000.000
- USA
- New York: 20.000.000
- Chicago: 7.000.000
- Japan
Es funktioniert auch weiter QuerySet s, glaube ich.
Quelle: https://docs.djangoproject.com/de/2.1/ref/templates/builtins/#regroup
Bearbeiten: Beachten Sie, dass das regroupTag nicht wie erwartet funktioniert, wenn Ihre Wörterbuchliste nicht nach Schlüsseln sortiert ist. Es funktioniert iterativ. Sortieren Sie Ihre Liste (oder Ihren Abfragesatz) nach dem Schlüssel des Zackenbarschs, bevor Sie sie an das regroupTag übergeben.
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))