Dans mon views.py, je construis une liste de deux-tuples, où le deuxième élément dans le tuple est une autre liste, comme ceci:Django - Comment faire un tuple déballage dans un modèle 'for' boucle
[ Product_Type_1, [ product_1, product_2 ],
Product_Type_2, [ product_3, product_4 ]]
dans le vieux Python ordinaire, je pourrais l'itération la liste comme ceci:
for product_type, products in list:
print product_type
for product in products:
print product
Je ne peux pas sembler faire la même chose dans mon modèle Django:
{% for product_type, products in product_list %}
print product_type
{% for product in products %}
print product
{% endfor %}
{% endfor %}
Je reçois cette erreur de Django:
Caught une exception tout en rendant: Argument # 2 zip doit prendre en charge l'itération
Bien sûr, il y a quelques balises HTML dans le modèle, ne pas imprimer des relevés. Le déballage de tuple n'est-il pas pris en charge dans la langue du modèle Django? Ou est-ce que je vais à ce sujet dans le mauvais sens? Tout ce que j'essaie de faire est d'afficher une simple hiérarchie d'objets - il existe plusieurs types de produits, chacun avec plusieurs produits (dans models.py, Product a une clé étrangère à Product_type, une simple relation un-à-plusieurs).
De toute évidence, je suis assez nouveau à Django, donc toute contribution serait appréciée.
Vous parlez de tuples, mais votre question contient seulement des listes. Ce sont des choses différentes en python. –
Vous n'avez actuellement pas deux tuples. Regardez attentivement votre liste, vous avez 4 éléments de la liste. Comme Jonny Buchanan note, vous devez faire ceci: [[Product_Type_1, [product_1, product_2],], [Product_Type_2, [product_3, product_4],],] pour obtenir une version de liste de deux triplets. – MontyThreeCard