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

Jawaban:


230

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


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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.