regroup
テンプレートタグを使用して、属性でグループ化することもできます。ドキュメントから:
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>
このように見えます:
- インド
- ムンバイ:19,000,000
- カルカッタ:15,000,000
- 米国
- ニューヨーク:20,000,000
- シカゴ:7,000,000
- 日本
それはQuerySet
私が信じているものにも働きます。
ソース:https : //docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup
編集:辞書のリストがキーでソートされていない場合、regroup
タグは期待どおりに機能しないことに注意してください。それは繰り返し動作します。そのため、regroup
タグに渡す前に、ハタのキーでリスト(またはクエリセット)を並べ替えます。
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))