คุณยังสามารถใช้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
s ที่ฉันเชื่อด้วย
แหล่งที่มา: 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'))