Почему forloop.counter0 в django сбивается соседним циклом?

У меня есть шаблон, который выглядит следующим образом:

<table>
  <tbody>
    {% for row in rows %}
      <tr>
        {% for column in row %}
          <td>{{ column }}</td>
        {% endfor %}
        <td><input type=checkbox name="checkbox_{{ forloop.counter0 }}"></td>
      </tr>
    {% endfor %}
  </tbody>
</table>

Имена чекбоксов в создаваемой таблице начинаются с checkbox_1 вместо checkbox_0.

Если я удалю внутренний цикл for, однако:

<table>
  <tbody>
    {% for row in rows %}
      <tr>
        <td>Column 1</td>
        <td>Column 2</td>
        <td><input type=checkbox name="checkbox_{{ forloop.counter0 }}"></td>
      </tr>
    {% endfor %}
  </tbody>
</table>

Они начинаются с checkbox_0, как и должно быть. Похоже, что внутренний цикл портит счетчик для внешнего цикла. Я даже пытался использовать тег with, но это, похоже, не помогло:

<table>
  <tbody>
    {% for row in rows %}
      {% with forloop.counter0 as outer_counter %}
        <tr>
          {% for column in row %}
            <td>{{ column }}</td>
          {% endfor %}
          <td><input type=checkbox name="checkbox_{{ outer_counter }}"></td>
        </tr>
      {% endwith %}
    {% endfor %}
  </tbody>
</table>

Есть идеи, что может идти не так?

Вы должны использовать forloop.parentloop, чтобы добраться до внешнего forloop:

{{forloop.parentloop.counter0}}
Вернуться на верх