我有一个看起来像这样的Django模型:
class City(models.Model):
country = models.CharField(max_length=50)
city = models.CharField(max_length=50)
population = models.IntegerField()
我想在模板中执行的操作是打印按国家/地区分组的城市列表,如下所示:
Canada Calgary Montreal Toronto Mexico Juarez United States Atlanta Chicago Denver
我可以通过国家名称轻松订购,但我想在第一次在for循环中看到时将模型的国家/地区名称打印为标题。有没有理智的方法在Django中做到这一点?
我是否可以在视图或查询中为模板提供“第一次出现”的布尔值,或者在模板中执行此操作的聪明方法?
答案 0 :(得分: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>