2015-08-05 4 views
1

УчитываяСчетчик в Django гнездо для цикла

<ul> 
{% for l in [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] %} 
{% for i in l %} 
<li> 
... 
</li> 
{% endfor %} 
{% endfor %} 
</ul> 

в шаблоне Django, что я должен заменить ... с, чтобы получить

1 
2 
3 
4 
5 
6 
7 
8 
9 

то, как я могу получить счетчик для гнезда для петли где длина элементов во внешнем цикле не всегда одинакова?

Update

<ul> 
{% for l in [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] %} 
{% for i in l %} 
<li> 
    {{forloop.counter}} 
</li> 
{% endfor %} 
{% endfor %} 
</ul> 

дает

1 
2 
3 
1 
2 
1 
2 
3 
4 

и

<ul> 
{% for l in [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] %} 
{% for i in l %} 
<li> 
    {{forloop.parentloop.counter}} 
</li> 
{% endfor %} 
{% endfor %} 
</ul> 

дает

1 
1 
1 
2 
2 
3 
3 
3 
3 

ответ

1

Для внутреннего контура вы можете использовать {{ forloop.counter }}. Между тем, для внешнего цикла вы можете использовать {{ forloop.parentloop.counter }}.

Update

Вы пробовали делать {{ forloop.parentloop.counter|add:forloop.counter }}?

Source

+0

Спасибо @ штоковой Ксавье. К сожалению, 'forloop.counter' и' forloop.parentloop.counter' не решают проблему самостоятельно, и поскольку элементы внешнего списка не имеют одинакового размера, я не мог бы считать простой алгебраической операцией для вычисления счетчика. –

+0

Вы можете объединить свои списки в представлении и передать это шаблону или написать простой тег, чтобы добавить два индекса: https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/# простые-теги – bwarren2

Смежные вопросы