首页 文章

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

提问于
浏览
1

我有一个看起来像这样的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循环中看到时将模型的国家名称打印为 Headers . 有没有理智的方式在Django做到这一点?

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

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>
    

相关问题