Colorazione riga alternativa nel modello Django con più di un set di righe



Answers

https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#cycle

{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}
Question

I modelli di Django offrono il cycle tag integrato per alternare diversi valori in punti diversi in un modello (o per un loop in un modello) ma questo tag non si reimposta quando si accede in un ambito esterno alla definizione del cycle s. Ad esempio, se nel modello sono presenti due o più liste, le righe di tutte le quali si desidera utilizzare alcune definizioni css odd e even , la prima riga di una lista riprenderà da dove è stata interrotta l'ultima, non con una nuova iterazione dalle scelte ( odd e odd )

Ad esempio, nel codice seguente, se il primo blog ha un numero dispari di voci, quindi la prima voce in un secondo blog inizierà come even , quando voglio che inizi a odd .

{% for blog in blogs %}
  {% for entry in blog.entries %}
    <div class="{% cycle 'odd' 'even' %}" id="{{entry.id}}">
      {{entry.text}}
    </div>
  {% endfor %}
{% endfor %}

Ho provato a ovviare a questo resetcycle tag resetcycle offerto qui:

Ticket Django: il tag Cycle dovrebbe essere resettato dopo essere uscito dall'ambito

inutilmente. (Il codice non ha funzionato per me.)

Ho anche provato a spostare il mio ciclo interno in un tag personalizzato, ma anche questo non ha funzionato, forse perché il ciclo di compilazione / rendering sposta il loop indietro nel ciclo esterno? (Indipendentemente dal motivo per cui, non ha funzionato per me.)

Come posso realizzare questo semplice compito !? Preferirei non creare una struttura dati a mio avviso con queste informazioni precompilate; sembra non necessario. Grazie in anticipo.







Finisco per farlo, con il forloop.counter0 - Funziona alla grande!

{% for product in products %}

    {% if forloop.counter0|divisibleby:4 %}<div class="clear"></div>{% endif %}

    <div class="product {% if forloop.counter0|divisibleby:4 %}col{% else %}col20{% endif    %}">
        Lorem Ipsum is simply dummy text
    </div>

{% endfor %}



Links