Djangoテンプレートのネストされたforループで最も外側のforloop.counterにアクセスする方法は?


118

Djangoの次のテンプレートで、最も外側のforループのforloop.counterにアクセスできますか?

{% for outerItem in outerItems %}
    {% for item in items%}
        <div>{{ forloop.counter }}.&nbsp;{{ item }}</div>
    {% endfor %}
{% endfor %}

forloop.counterは、上記の例で最も内側のforループのカウンターを返します

回答:


230

forloop.parentloopアウターに行くのに使えforloopますので、あなたのケースで{{forloop.parentloop.counter}}


14

あなたも使うことができ

複雑な変数をより単純な名前でキャッシュします。これは、「高価な」メソッド(データベースにアクセスするメソッドなど)に複数回アクセスする場合に役立ちます。

{% for outerItem in outerItems %}
  {% with forloop.counter as outer_counter %}
    {% for item in items%}
        <div>{{ outer_counter }}.&nbsp;{{ item }}</div>
    {% endfor %}
  {% endwith %}
{% endfor %}

Djangoの高バージョンを使用している場合は、

{% with outer_counter = forloop.counter %}

私がチェックしたところ、Django 1.4.x-Django 1.9.xは2つの方法をサポートしています。

これは、多くのforループがある場合により明確になります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.