Skip to main content
 首页 » 编程设计

python之Django之复杂的嵌套列表和元组拆包

2024年08月28日31kuangbin

这是简化的,但它从根本上描述了我正在尝试做的事情。

在我的 views.py 中,我正在构建一个列表列表。每个列表包含商店名称、(产品、价格)元组列表和(员工、年龄)元组列表。两个元组列表的长度都不确定(但每一行的长度相同)。包含名称和元组列​​表的外部列表的长度也是不确定的。

[[store_name,         [(product_1a, price_1a),(product_2a,price_2a),...],  [(employee_1a, age_1a), (employee_2a, age_2a),...]] 
 [another_store_name, [(product_1b, price_1b),(product_2b,price_2b),...],  [(employee_1b, age_1b), (employee_2b, age_2a),...]] 
 ...                                                                                                                          ] 

上述包的每一行都需要解包到我的模板中的表格的一行中。我正在为我的模板尝试以下代码:

{% for name, products, employees in package %} 
  <tr> 
      <td>{{ name }}</td> 
    {% for product, price in products %} 
      <td>{{ product }}</td> <td>{{ price }}</td> 
    {% endfor %} 
    {% for employee, age in employees %} 
      <td>{{ employee }}</td> <td>{{ age }}</td> 
    {% endfor %} 
  </tr> 
{% endfor %} 

实际上 - 我已经尝试了十几种不同的解决方案,但我已经束手无策了。非常感谢任何有关如何在模板中成功重新打包和解包以实现预期目标的帮助!

附言我并没有真正处理商店名称、产品和员工,但这似乎是将其放在帖子中的最简单方法。如果您质疑是否需要在一个表行中包含此类数据,我完全理解!

请您参考如下方法:

您可以通过 arr.0、arr.1 等访问模板中的数组序列元素。请参阅此处的文档:https://docs.djangoproject.com/en/1.4/topics/templates/#variables

所以尝试这样的事情:

{% for item in package %} 
  <tr> 
      <td>{{ item.0 }}</td> 
    {% for product in item.1 %} 
      <td>{{ product.0 }}</td> <td>{{ product.1 }}</td> 
    {% endfor %} 
    {% for employee in item.2 %} 
      <td>{{ employee.0 }}</td> <td>{{ employee.1 }}</td> 
    {% endfor %} 
  </tr> 
{% endfor %}