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

Python 在模板中多次使用压缩查询集,python,django,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); re

我有一个仅为字符串的模型:

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 %}
我希望有4行输出,因为这两个实例循环了两次。但是它只打印了一次。我做错了什么?

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


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

是否使用Python 3?在Python3中,
zip
将为您提供一个迭代器,当您对它进行迭代时,它将被使用,在第二个循环中可能会留下一个空的迭代器。尝试使用
list(zip(data,data2))
看看这是否解决了您的问题。啊,似乎就是这样。谢谢
hello there 0 
i am a string 0