我的模型只是一个字符串:
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个实例循环两次。但是它只打印一次。我做错了什么?
答案 0 :(得分:2)
在Python 3中,zip
将为您提供一个迭代器,这意味着它将在第一个循环中使用,因此不会在第二个循环上打印任何内容。
您可以通过将迭代器强制转换为列表,将zip(data, data2)
替换为list(zip(data, data2))
来解决此问题。