我有两个Django模型对象列表,我想在模板上显示。 list1
是一维数组,list1
是二维数组。在模板中,我想遍历list1
中的每个元素,显示其值,然后在list2
中显示相应元素的所有值。
例如,如果list1 = ['Andrew', 'Ben,' 'Charles']
和list2 = [[3, 4, 8], [12, 9], [10, 0, 5, 1]]
,那么我想显示:
- Andrew
- 3
- 4
- 8
- Ben
- 12
- 9
- Charles
- 10
- 0
- 5
- 1
我的问题是,在我的模板中,如何循环浏览list1
然后访问list2
的相应元素?以下代码是我到目前为止的代码:
<ul>
{% for name in list1 %}
<li>{{ name }}
<ul>
{% for A %}
<li>{{ B }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
我应该写什么代替A
和B
?
答案 0 :(得分:3)
您应该在视图中将它们拼接在一起。
combined_list = zip(list1, list2)
然后在你的模板中你可以这样做:
{% for item in combined_list %}
{{ item.0 }}
{% for value in item.1 %}
{{ item.1 }}
{% endif %}
{% endif %}
答案 1 :(得分:2)
在python视图中,您可以将它们压缩在一起。
def someview(request):
list1 = ['Andrew', 'Ben,' 'Charles']
list2 = [[3, 4, 8], [12, 9], [10, 0, 5, 1]]
zipped_list = zip(list1, list2)
return render(request, 'base/home.html', {'zipped_list': zipped_list})
<ul>
{% for item1 in zipped_list %} <- this is now a tuple with the first element being our first item and the second element being a list
<li>{{ item1.0 }}
<ul>
{% for secondItem in item1.1 %}
<li>{{ secondItem }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>