Django模板:循环遍历两个列表

时间:2014-03-12 17:05:44

标签: django

我有两个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>

我应该写什么代替AB

2 个答案:

答案 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视图中,您可以将它们压缩在一起。

view.py

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})

碱/ home.html做为

<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>