我有一个查询集,返回的结果如下:
defaultdict(<type 'list'>,
{
123:
[
{'field1': 123, 'field2': 'August', 'field3': 50},
{'field1': 123, 'field2': 'September', 'field3': 25},
{'field1': 123, 'field2': 'October', 'field3': 70}
],
789:
[
{'field1': 789, 'field2': 'August', 'field3': 80},
{'field1': 789, 'field2': 'September', 'field3': 22},
{'field1': 789, 'field2': 'October', 'field3': 456}
],
})
我试图遍历模板中的列表,但是我只能得到要显示的键,例如:
{% for each in results %}
{{ each }}<br>
{% endfor %}
返回:
123
789
我尝试遍历results.items
,但没有返回任何结果。我尝试使用key, value
,它也不会返回任何内容。我起初以为我可以嵌套for loop
,然后遍历each
:
{% for each in results %}
{% for row in each %}
{{ row }}
{% endfor %}
{% endfor %}
但是返回'int' object is not iterable
如果有人能指出我正确的方向,我不确定我缺少什么!
答案 0 :(得分:2)
我还没有看到Python的这种语法。我没有和django合作。因此,我将只使用您自己的格式,并只修改一件事。您不必使用for row in each
,而不必说for row in results[each]
。 results
是字典,而each
是键。如果您想要该键的字典值,则需要通过results[each]
来获得它。现在,您可以遍历该值(如果可迭代)。
{% for each in results %}
{% for row in results[each] %}
{{ row }}
{% endfor %}
{% endfor %}
答案 1 :(得分:2)
实际上,您正在尝试遍历整数。
第一个for循环遍历results.keys()
,这就是为什么要取回作为第一个字典中键的整数的原因。
类似的东西可以在python中工作:
for x in results:
for y in results[x]:
print y
或者,您可以像这样使用.items()/ .iteritems():
for k, v in results.items():
for small_dict in v:
print small_dict
考虑到您正在尝试在Django模板中执行此操作,我认为第一个解决方案将为您工作。
答案 2 :(得分:2)
您可以使用字典的values
方法来获取每个子列表,然后可以在嵌套循环中对其进行迭代:
{% for each in results.values %}
{% for row in each %}
{{ row.field1 }}
{{ row.field2 }}
{{ row.field3 }}
{% endfor %}
{% endfor %}