Django - Comment faire tuple déballage dans un modèle "pour" boucle

Dans mon views.py je suis en train de construire une liste de deux n-uplets, où le second élément du tuple est une autre liste, comme ceci:

[ Product_Type_1, [ product_1, product_2 ],
  Product_Type_2, [ product_3, product_4 ]]

Dans la plaine de vieux Python, j'ai pu itération de la liste comme ceci:

for product_type, products in list:
    print product_type
    for product in products:
        print product

Je n'arrive pas à faire la même chose dans mon Django template:

{% for product_type, products in product_list %}
    print product_type
    {% for product in products %}
        print product
    {% endfor %}
{% endfor %}

J'obtiens cette erreur de Django:

Pris une exception tout de rendu: zip argument n ° 2 doit prendre en charge l'itération

Bien sûr, il y a certaines balises HTML dans le template, pas d'impression des déclarations. Est tuple déballage pas pris en charge dans le langage de template de Django? Ou suis-je les choses à ce sujet dans le mauvais sens? Tout ce que je suis en train de faire, c'est afficher une simple hiérarchie des objets - il existe plusieurs types de produits, chacune avec plusieurs produits (en models.py le Produit est une clé étrangère vers Product_type, un simple one-to-many relation).

Évidemment, je suis tout à fait nouveau pour Django, de sorte que toute entrée serait appréciée.

  • Vous parlez de tuples, mais votre question ne contient que des listes. Ce sont des choses différentes en python.
  • En fait vous n'avez pas de deux n-uplets. Regardez attentivement votre liste, vous avez 4 éléments de la liste. Comme Jonny Buchanan noté, vous devez faire ceci: [ [Product_Type_1, [ product_1, product_2 ], ], [Product_Type_2, [ product_3, product_4 ], ], ] afin d'obtenir une version de liste de deux n-uplets.
InformationsquelleAutor Chris Lawlor | 2008-11-07