2009-12-22 9 views
15

Ho un elenco di prodotti che inserisce 3 prodotti su una riga e cancella la riga e ne aggiunge altri 3, questo funziona bene ovunque ma IE6, so che aggiungendo <div> in ogni gruppo di 3 prodotti risolveremo questo è il file di modello al momentopython aggiungi un nuovo div ogni 3 iterazione

{% for product in category.products.all %} 
     <div class="{% cycle 'clear' '' '' %}"> 
      <a href="{% url shop.views.product category.slug product.slug %}"><img src="{{MEDIA_URL}}{{product.mini_thumbnail}}" alt="{{product.name}}" class="thumbnail"/></a> 
      <div class="prod-details"> 
      <h3><a href="{% url shop.views.product category.slug product.slug %}">{{product.get_product_name}}</a></h3> 
      <h4 class="strap">{{product.get_product_detail}}</h4> 
      <p>{{ product.strap }}</p> 
      <ul> 
       <li class="price">&pound;{{product.price}}</li> 
       <li class="quantity"> 
        <select name="quantity_{{product.id}}"> 
         <option label="1" value="1">1</option> 
         <option label="2" value="2">2</option> 
         <option label="3" value="3">3</option> 
         <option label="4" value="4">4</option> 
         <option label="5" value="5">5</option> 
         <option label="6" value="6">6</option> 
         <option label="7" value="7">7</option> 
         <option label="8" value="8">8</option> 
         <option label="9" value="9">9</option> 
        </select> 
       </li> 
       <li><a href="{% url shop.views.product category.slug product.slug %}">Details &gt;</a></li> 
       <li class="right"><input type="submit" name="add_to_basket_{{product.id}}" value="Add to Basket &gt;"/></li> 
      </ul> 
      </div> 
     </div> 
    {% endfor %} 

risposta

37

soluzione di codeape funziona solo se si sta utilizzando un controllo SVN molto recente del trunk Django. Se stai usando la versione 1.1 o inferiore, quella sintassi non è supportata.

Invece, è possibile utilizzare il filtro divisibleby:

{% if forloop.counter|divisibleby:3 %}<div>{% endif %} 
8

Usa forloop.counter e un operatore modulo all'interno del ciclo:

{% for ... %} 
{% if forloop.counter|divisibleby:3 %}<div>{% endif %} 
... 
{% if forloop.counter|divisibleby:3 %}</div>{% endif %} 
{% endfor %} 

Vedi http://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

MODIFICA:

Corretto l'esempio di codice.

+0

Ho provato a fare questo ottengo un errore modello di 'se' dichiarazione formattato in modo errato – Udders

+0

Scusa, ho dimenticato che il Django-template if non accetta alcuna espressione di python. – codeape