Bạn cũng có thể sử dụng regroup
thẻ mẫu để nhóm theo thuộc tính. Từ các tài liệu:
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>
Trông như thế này:
- Ấn Độ
- Mumbai: 19.000.000
- Calcutta: 15.000.000
- Hoa Kỳ
- New York: 20.000.000
- Chicago: 7.000.000
- Nhật Bản
Nó cũng hoạt động trên QuerySet
s tôi tin.
nguồn: https://docs.djangoproject.com/en/2.1/ref/temsheet/builtins/#regroup
chỉnh sửa: lưu ý regroup
thẻ không hoạt động như bạn mong đợi nếu danh sách từ điển của bạn không được sắp xếp theo khóa. Nó hoạt động lặp đi lặp lại. Vì vậy, sắp xếp danh sách của bạn (hoặc bộ truy vấn) theo khóa của cá mú trước khi chuyển nó vào regroup
thẻ.
Members.objects.filter(date=some_date).values('designation').annotate(dcount=Count('designation'))