2010-02-12 6 views
7

Je suis tombé sur un "oubli" intéressant dans la balise template Django {% cycle %}. Cela a été répertorié comme a bug, mais je me demande s'il existe une solution de contournement pour cela?{% cycle%} contourne les boucles imbriquées?

{% for r1 in range_0_2 %} 
    {% for r2 in range_0_3 %} 
    {{ r1 }}-{{ r2 }}-{{ cycle 'even' 'odd' }} 
    {% endfor %} 
{% endfor %} 

Cela donne:

0-0-even 
0-1-odd 
0-2-even 
1-0-odd 
1-1-even 
1-2-odd 

Il céderais:

0-0-even 
0-1-odd 
0-2-even 
1-0-even 
1-1-odd 
1-2-even 

Répondre

10

J'ai remarqué le même problème dans mes modèles.

Vous pouvez utiliser une solution de contournement comme ce qui suit:

{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %} 
1

J'utilise « include » pour le contenu de la boucle intérieure

{% regroup employee_bypos_list by pos as by_pos %} 
{% for pos_set in by_pos %} 
    <h2>«{{ pos_set.grouper.address }}»</h2> 
    {% with pos_set.list as employee_list %} 
     {% include 'website/employee/_staff_by_post.html' %} 
    {% endwith %} 
{% endfor %} 
+0

Pour votre information, mettre un inclure dans une boucle peut vraiment tuer les performances si vous ne faites pas attention. – speedplane

Questions connexes