在模板中多次使用压缩查询集

时间:2016-09-07 02:50:36

标签: python django

我的模型只是一个字符串:

class Data(models.Model):
    string = models.CharField(max_length=200);

我的数据库中有 2 注册的模型实例。

它由此视图呈现,它将查询集拉到另一个列表:

def index(request):
    data = Data.objects.all();
    data2 = [];
    for x in data:
        data2.append(0);
    return render(request, 'testApp/index.html', {"data": zip(data, data2)})

以及模板代码:

{% for element, e in data %}
    {{ element.string }} {{ e }} <br/>
{% endfor %}

{% for element, e in data %}
    {{ element.string }} {{ e }} <br/>
{% endfor %}

此模板迭代数据两次,打印出压缩列表中的元素。

这是我的输出:

hello there 0 
i am a string 0 

我期待4行输出,因为2个实例循环两次。但是它只打印一次。我做错了什么?

1 个答案:

答案 0 :(得分:2)

在Python 3中,zip将为您提供一个迭代器,这意味着它将在第一个循环中使用,因此不会在第二个循环上打印任何内容。

您可以通过将迭代器强制转换为列表,将zip(data, data2)替换为list(zip(data, data2))来解决此问题。