Django, templates, para loops e ciclos

(tl; dr na parte inferior)

Deixe-me tentar explicar o que estou tentando realizar: tenho uma matriz bidimensional e gostaria de exibir seu conteúdo de uma determinada maneira. Eu quero "linhas", e cada linha pode exibir mais de três "objetos", por falta de uma palavra melhor. Então eu quero iterar sobre o array e criar meu HTML no processo. Minha ideia é a seguinte: todos os "três primeiros" elementos da matriz devem abrir a "linha". Cada "terceiro de três" elementos deve fechar a "linha". No entanto, se o último elemento na matriz [interna] não for o "terceiro de três", ele ainda deverá fechar a linha. Então, por exemplo, se tivéssemos algo comoL=[ [0,1,2,3,4], [5,6,7] ], Gostaria de exibi-lo da seguinte forma:

0  1  2
3  4

5  6  7

Que pode ser marcado como:

<div>0 1 2</div>
<div>3 4</div>
<div>5 6 7</div>

Meu primeiro pensamento foi simplesmente usar o operador de módulo e ver se cada iteração era o "primeiro", "segundo" ou "terceiro" de uma linha, mas os modelos do Django não suportam diretamente o módulo (mais sobre isso depois).

Então eu criei um código de modelo como este:

{% for x in L %}
 {% for y in x %}
  {% cycle '<div>' '' '' %}
   {{ y }}
  {% cycle '' '' '</div>' %}
 {% endfor %}<br/>
{% endfor %}

E isso foi um bom começo. Tomando o exemplo acima, em0 nós abriríamos um div, em1 não faça nada,2 feche o div, em3 abri-lo e4... bem, não fecharia, porque4 não foi o "terceiro de uma série de 3". Então, enquanto os templates do Django não tem modulo, eles têm um divisibleby check, então eu criei uma lógica adicional para dizer, se nós acertarmos o último elemento do loop interno, e ele também não é divisível por 3 (para que não tenhamos um close duplicado), feche o div:

{% for x in z %}
 {% for y in x %}
  {% cycle '<div>' '' '' %}
   {{ y }}
  {% cycle '' '' '</div>' %}

  {% if forloop.last %}
  {% if forloop.counter|divisibleby:"3" %}
    <!-- Row Already Closed -->
  {% else %}
    </div>
  {% endif %}
  {% endif %}

 {% endfor %}<br/>
{% endfor %}

Isso funcionou melhor! Agora, passei por toda a primeira matriz interna com marcação adequada. Meu problema é o seguinte: aparentemente, a funcionalidade de ciclo do Django não é redefinida quando você sai do escopo do loop for interno. O que isto significa é que meu número5 do exemplo acima não está abrindo um div como deveria, ele não está sendo reconhecido como o primeiro em um ciclo. Na verdade, ele está sendo reconhecido como um terceiro, e por isso está fechando uma div!

Então eu não tenho certeza para onde ir a partir daqui. Isto parece ser umProblemas conhecidos e não corrigidos no Django. Alguém pode ajudar, por favor?

tl; dr Eu quero pegar uma matriz 2D, por exemploL=[ [0,1,2,3,4], [5,6,7] ] e marcá-lo corretamente agrupando no máximo 3 de cada vez e sem agrupar quaisquer elementos de vários arrays juntos, da seguinte forma:

0  1  2
3  4

5  6  7

Qual seria o código do modelo para isso e por quê?

questionAnswers(1)

yourAnswerToTheQuestion