1

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

class City(models.Model):
    country = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    population = models.IntegerField()

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

加拿大
  卡尔加里
  蒙特利尔
  多伦多
墨西哥
  华雷斯
美国
  亚特兰大
  芝加哥
  丹佛

我可以很容易地按国家名称订购,但我只想在第一次在 for 循环中看到模型的国家名称时将其打印为标题。在 Django 中有一种健全的方法可以做到这一点吗?

我可以在视图或查询中做些什么来为模板提供“第一次出现”的布尔值,或者在模板中以聪明的方式做到这一点?

4

1 回答 1

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>
于 2012-12-26T22:11:07.240 回答