【发布时间】:2010-09-21 05:28:21
【问题描述】:
在我的views.py中,我正在构建一个双元组列表,其中元组中的第二项是另一个列表,如下所示:
[ 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 收到此错误:
渲染时遇到异常:zip 参数 #2 必须支持迭代
当然,模板中有一些 HTML 标记,而不是打印语句。 Django 模板语言不支持元组解包吗?还是我以错误的方式解决这个问题?我要做的只是显示一个简单的对象层次结构 - 有几种产品类型,每种都有几个产品(在 models.py 中,Product 有一个 Product_type 的外键,一个简单的一对多关系)。
显然,我对 Django 还是很陌生,因此我们将不胜感激。
【问题讨论】:
-
您谈论元组,但您的问题仅包含列表。它们在 python 中是不同的东西。
-
你实际上没有二元组。仔细查看您的列表,您有 4 个列表项。正如 Jonny Buchanan 所说,您需要这样做: [ [Product_Type_1, [ product_1, product_2 ], ], [Product_Type_2, [ product_3, product_4 ], ], ] 以获得二元组的列表版本。
标签: python django templates tuples iterable-unpacking