Sie können das regroup
Vorlagen-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 regroup
Tag 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 regroup
Tag übergeben.
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))