使用Django,我有一个相当复杂的SQL查询工作正常并返回我想要的结果,所以我不想尝试使用Django的模型查询表示法重现它。
我将结果传递给我的模板,并能够使用以下符号显示它们:
{% for line in myresults %}
...
{{ line.0 }}
...
{{ line.1 }}
etc.
{% endfor %}
有没有办法在此结果集上使用regroup标记?
如果我尝试:
{% regroup myresults by myresults.0 as mylist %}
{% for item in mylist %}
{{ item.grouper }}
{% for line in item.list %}
...
{{ line.0 }}
{{ line.1 }}
etc.
我像以前一样获得所有结果(没有重新组合)但是没有得到item.grouper(我看到的只是“无”作为一个单独的组而不是我的多个组)
这是一个语法问题还是我尝试的东西不适合重组的功能?
我已经以正常的方式使用重新组合对象列表,但上面让我难过。
有什么建议吗?提前谢谢。
答案 0 :(得分:1)
{% regroup myresults by myresults.0 as mylist %}
您按照列表myresults
中的第一项进行分组,您必须按项目的某个字段进行分组。
here的下一个例子:
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'},
]
...并且您希望显示按国家/地区排序的分层列表,如下所示:
India
Mumbai: 19,000,000
Calcutta: 15,000,000
USA
New York: 20,000,000
Chicago: 7,000,000
Japan
Tokyo: 33,000,000
您可以使用{% regroup %}
标记按国家/地区对城市列表进行分组。以下模板代码片段可以实现此目的:
{% regroup cities by country as country_list %}
<ul>
{% for country in country_list %}
<li>{{ country.grouper }}
<ul>
{% for item in country.list %}
<li>{{ item.name }}: {{ item.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>