Вы можете написать это так:
{% for element in collection %}
{% if forloop.counter|add:"-24"|divisibleby:"29" %}
...
{% endif %}
{% endfor %}
, учитывая, что смещение (здесь 24
) меньше периода (здесь 29
), это будет работать, в противном случае нам понадобится дополнительное условие (например, с 31
и 29
):
{% for element in collection %}
{% if forloop.counter >= 31 forloop.counter|add:"-31"|divisibleby:"29" %}
...
{% endif %}
{% endfor %}
Например:
>>> tp = '{% for element in collection %}{% if forloop.counter|add:"-24"|divisibleby:"29"%}A{% else %}B{% endif %}{% endfor %}'
>>> Template(tp).render(Context({'collection': range(100)}))
'BBBBBBBBBBBBBBBBBBBBBBBABBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBBBBBBBBBBBBBBBB'
, как вы можете видеть, для итераций, где выполняется условие, A
Но если вам нужно написать сложную логику, в общем, вам следует пересмотреть дизайн и посмотреть, не можете ли вы вместо этого «переместить логику» в представление.