Bagaimana mengakses forloop.counter terluar dengan nested for loops di templat Django?

118

Apakah mungkin mengakses forloop.counter untuk perulangan for terluar di templat berikut di Django:

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

forloop.counter mengembalikan penghitung loop for terdalam dalam contoh di atas

jamesaharvey
sumber

Jawaban:

230

Anda dapat menggunakan forloop.parentloopuntuk keluar forloop, jadi dalam kasus Anda {{forloop.parentloop.counter}}.

Tom
sumber
14

Anda juga bisa menggunakan dengan

Cache variabel kompleks dengan nama yang lebih sederhana. Ini berguna saat mengakses metode "mahal" (mis., Metode yang mengenai database) beberapa kali.

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

jika menggunakan versi tinggi Django Anda dapat menggunakan

{% with outer_counter = forloop.counter %}

Saya telah memeriksa, Django 1.4.x - Django 1.9.x mendukung dua metode.

ini lebih jelas ketika memiliki banyak loop untuk

WeizhongTu
sumber