2009-12-22 10 views
15

Tengo una lista de productos que pone 3 productos en una fila y borra la fila y agrega 3 adicionales, esto funciona bien en todas partes pero IE6, sé que agregando <div> alrededor de cada grupo de 3 productos va a resolver este es el archivo de plantilla en el momentopython agregar un nuevo div cada 3ra iteración

{% 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 %} 

Respuesta

37

La solución de codeape solo funciona si está utilizando una descarga de SVN muy reciente de la línea externa de Django. Si usa la versión 1.1 o posterior, esa sintaxis no es compatible.

su lugar, puede utilizar el filtro divisibleby:

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

uso forloop.counter y un operador de módulo dentro del bucle:

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

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

EDITAR:

Solucionado el ejemplo del código.

+0

He intentado hacer esto me sale un error de plantilla 'if' formateado incorrectamente – Udders

+0

Lo sentimos, se me olvidó que el Django de plantillas si la declaración no acepta ninguna expresión de pitón. – codeape

Cuestiones relacionadas