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 に答える