Как получить доступ к внешнему forloop.counter с вложенными циклами for в шаблонах Django? - PullRequest
106 голосов
/ 04 марта 2010

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

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

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

Ответы [ 2 ]

205 голосов
/ 04 марта 2010

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

11 голосов
/ 29 июня 2016

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

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

{% 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 %}

Iпроверил, Django 1.4.x - Django 1.9.x поддерживает два метода.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...