В моих view.py я создаю список двух кортежей, где второй элемент в кортеже - это еще один список, например:Django - Как сделать набор распаковки в цикле шаблона 'for'
[ Product_Type_1, [ product_1, product_2 ],
Product_Type_2, [ product_3, product_4 ]]
в простом старом Python, я мог бы итерацию список, как это:
for product_type, products in list:
print product_type
for product in products:
print product
я не могу сделать то же самое в моем шаблоне Django:
{% for product_type, products in product_list %}
print product_type
{% for product in products %}
print product
{% endfor %}
{% endfor %}
Я получаю эту ошибку с Django:
Caught исключение во время рендеринга: почтовый аргумент # 2 должен поддерживать итерация
Конечно, есть некоторые HTML разметки в шаблоне, а не печатать заявления. Распаковка тюков не поддерживается на языке шаблонов Django? Или я об этом ошибаюсь? Все, что я пытаюсь сделать, это показать простую иерархию объектов - существует несколько типов продуктов, каждый из которых имеет несколько продуктов (в models.py, Product имеет внешний ключ к Product_type, простое отношение «один ко многим»).
Очевидно, что я совершенно новый для Django, поэтому любой ввод будет оценен.
Вы говорите о кортежах, но ваш вопрос содержит только списки. Это разные вещи в python. – 2008-11-07 02:48:23
У вас на самом деле нет двухкортежей. Посмотрите внимательно на свой список, у вас есть 4 элемента списка. Как отметил Jonny Buchanan, что вам нужно сделать это: [[Product_Type_1, [product_1, product_2]], [Product_Type_2, [product_3, product_4]]] , чтобы получить версию списка двух кортежей. – MontyThreeCard 2017-03-17 14:03:09