如何在Django模板中为循环分组(打印标题)有序项?

Jas*_*ion 1 python django django-templates

我有一个看起来像这样的Django模型:

class City(models.Model):
    country = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    population = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想在模板中做的是打印按国家/地区分组的城市列表,如下所示:

Canada
  Calgary
  Montreal
  Toronto
Mexico
  Juarez
United States
  Atlanta
  Chicago
  Denver

我可以很容易地通过国家名称订购,但我想在第一次在for循环中看到时将模型的国家名称打印为标题.有没有理智的方式在Django做到这一点?

我可以在视图或查询中为模板提供"第一次出现"的布尔值,或者在模板中执行此操作的巧妙方法吗?

mVC*_*Chr 5

regroup,你会做这样的事情:

{% regroup city_list|dictsort:"country" by country as country_list %}

<ul>
{% for country in country_list %}
    <li><strong>{{ country.grouper }}</strong>
        <ul>
            {% for item in country.list %}
                <li>{{ item.city }}</li>
            {% endfor %}
        </ul>
    </li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)