Sie können auch die regroup
Template-Tag, um nach Attributen zu gruppieren. Aus den Unterlagen:
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 countries_list %}
<ul>
{% for country in countries_list %}
<li>{{ country.grouper }}
<ul>
{% for city in country.list %}
<li>{{ city.name }}: {{ city.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Sieht so aus:
- Indien
- Mumbai: 19.000.000
- Kalkutta: 15,000,000
- USA
- New York: 20.000.000
- Chicago: 7.000.000
- Japan
Es funktioniert auch bei QuerySet
s glaube ich.
Quelle: https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup
edit: beachten Sie die regroup
Tag nicht funktioniert so, wie Sie es erwarten würden, wenn Ihre Wörterbuchliste nicht nach Schlüsseln sortiert ist. Es funktioniert iterativ. Sortieren Sie also Ihre Liste (oder Ihren Abfragesatz) nach dem Schlüssel des Groupers, bevor Sie sie an die regroup
Tag.