2010-12-06 31 views
8

Je voudrais afficher des données, trois colonnes par ligne pendant mon. Je voudrais que mon résultat ressemble à ceci:Comment faire pour trois boucles par ligne dans Django/python?

<table> 
<tr><td>VALUE1</td><td>VALUE2</td><td>VALUE3</td></tr> 
<tr><td>VALUE4</td><<td>VALUE5</td><td>VALUE6</td></tr> 
</table> 

Quelqu'un sait-il comment le faire?

Erreur de syntaxe TemplateSyntaxError à/

déclarations

'pour' devraient utiliser le format 'pour x en y': pour i dans la plage (0, len (all_products_list), 3)

Répondre

22

Il y a un divisiblePar marque.

Ainsi, vous pouvez faire quelque chose (laid) comme:

<table><tr> 
{% for field in form %} 
    <td>{{ field }}</td> 
    {% if forloop.last %} 
    </tr> 
    {% else %} 
    {% if forloop.counter|divisibleby:"3" %} 
     </tr><tr> 
    {% endif %} 
    {% endif %} 
{% endfor %} 
</table> 

Sinon, vous pouvez donner à votre classe sous forme d'une méthode table_print qui retourne une chaîne HTML (enveloppé dans mark_safe).

+0

Merci pour la réponse, mais c'est une balise de gabarit, qui est bien sûr une liste de données récupérées à partir de mysql –

-2
<table> 
{% for i in range(0, len(stuff), 3) %} 
    <tr> 
    {% for j in range(3) %} 
     <td>{{ stuff[i+j] }}</td> 
    {% endfor %}  
    </tr> 
{% endfor %} 
</table> 

Désolé question mal comprise.

+0

Merci pour cette réponse rapide mais erreur de syntaxe? Cette méthode n'a pas fonctionné dans le modèle? –