Короче говоря, Django не делает то, что вы хотите.
for loop имеет ряд полезных свойств внутри цикла.
forloop.counter The current iteration of the loop (1-indexed)
forloop.counter0 The current iteration of the loop (0-indexed)
forloop.revcounter The number of iterations from the end of the loop (1-indexed)
forloop.revcounter0 The number of iterations from the end of the loop (0-indexed)
forloop.first True if this is the first time through the loop
forloop.last True if this is the last time through the loop
forloop.parentloop For nested loops, this is the loop "above" the current one
Youвозможно, вы можете использовать forloop.counter0, чтобы получить нужные вам индексы с нулями;к сожалению, язык шаблонов Django не поддерживает индексы переменных массивов (вы можете делать {{ foo.5 }}
, но вы не можете делать {{ foo.{{bar}} }}
).
Обычно я пытаюсь расположить данные ввид, чтобы его было проще представить в шаблоне.Например, вы можете создать в своем представлении массив, состоящий из словарей, так что все, что вам нужно сделать, это перебрать массив и извлечь именно то, что вам нужно, из отдельных словарей.Для действительно сложных вещей я зашел так далеко, что создал объект DataRow, который бы правильно форматировал данные для определенной строки в таблице.