Как получить доступ к внешнему файлу forloop.counter с вложенными циклами в шаблонах Django?

Можно ли получить доступ к forloop.counter для внешнего цикла for в следующем шаблоне в Django:

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

forloop.counter возвращает самый внутренний для счетчика циклов в приведенном выше примере

Ответ 1

Вы можете использовать forloop.parentloop для доступа к внешнему forloop, поэтому в вашем случае {{forloop.parentloop.counter}}.

Ответ 2

вы также можете использовать с

Кэширует сложную переменную под более простым именем. Это полезно при доступе к "дорогостоящему" методу (например, к тому, который попадает в базу данных) несколько раз.

{% 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 поддерживает два метода.

это более понятно, когда у них много циклов