1

使用 Django,我有一个相当复杂的 SQL 查询,它工作正常并返回我想要的结果,所以我不想尝试使用 Django 的模型查询符号来重现它。

我将我的结果传递给我的模板,并且能够使用以下符号显示它们:

{% for line in myresults %}
...
{{ line.0 }}
...
{{ line.1 }}
etc.
{% endfor %}

有没有办法在这个结果集上使用重组标签?

如果我尝试:

{% 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(我所看到的只是“无”作为一个组而不是我的多个组)

这是语法问题还是我正在尝试一些不适合重组功能的东西?

我已经以正常方式对对象列表使用了重组,但上面的内容让我很难过。

有什么建议么?提前致谢。

4

1 回答 1

1

{% regroup myresults by myresults.0 as mylist %}您按列表中的第一项分组时,myresults 您必须按项目的某些字段分组。

下一个示例来自这里

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>
于 2012-08-27T16:21:07.187 回答