<p>还可以使用<code>regroup</code>模板标记按属性分组。从文档中:</p>
<pre><code>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>
</code></pre>
<p>看起来像这样:</p>
<ul>
<li>印度
<ul>
<li>孟买:19000000</li>
<li>加尔各答:15000000</li>
</ul></li>
<li>美国
<ul>
<li>纽约:20000000</li>
<li>芝加哥:7000000</li>
</ul></li>
<li>日本
<ul>
<li>东京:33000000</li>
</ul></li>
</ul>
<p>我相信它也适用于<code>QuerySet</code>。</p>
<p>来源:<a href="https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup" rel="nofollow noreferrer">https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#regroup</a></p>
<p>编辑:注意<code>regroup</code>标记<em>不会像您希望的那样工作,如果您的字典列表不是按键排序的。它迭代工作。因此,在将列表传递给<code>regroup</code>标记之前,请按grouper的键对其进行排序。</p>