我正在视图中处理一个查询集以获取数据摘要,并且需要能够在我的模板中迭代结果数据集。我通过构建字典然后使用.items来处理键值对,使用键和单值来做到这一点:
{% for id,total in list_summary.items %}
<tr class="{% cycle 'row1' 'row2' %}" >
<td>{{id}}</td>
<td>{{total}}</td>
</tr>
{% endfor %}
我遇到的问题是我需要的不仅仅是一个键和值。我需要多个价值观。我尝试使用字典作为值来构建字典,但在模板中我无法获取字典中的值。
为使这项工作,需要构建哪些适当的数据结构?我想到了一个临时模型或制作自定义模板标签来访问子字典值,但我认为在将查询集数据提供给视图之前必须有更好的方法来处理它。
我的观看代码在这里:
lists=lists.objects.filter(user_id=user_id)
list_summary={}
# make a dictionary that we wil iterate over in template. The dictionary has the total spend for each deal
for list in lists:
id = list.id
name = list.deal_name
price = list.normal_price
quantity = list.quantity
total = price * quantity
try:
list_item=list_summary[id]
old_total=list_item['total']
list_summary[id]={'name':name, 'total':old_total + total}
except:
list_summary[id]={'name':name, 'total':total}
context = {
'list_summary':list_summary,
}
return render_to_response("lists.html", context)
非常感谢任何帮助!
非常感谢提前
富
答案 0 :(得分:1)
我尝试使用字典作为值来构建字典但是在 模板我无法获取字典中的值。
为什么不呢?值也是键/值对..
{% for list_id, dict in list_summary.items %}
list_id: {{ list_id }}
{% for k, v in dict.items %}
key: {{ k }} <!-- name, total -->
value: {{ v }}
{% endfor }
{% endfor %}
{% for list_id, value in list_summary.items %}
list_id: {{ list_id }}
Name: {{ value.name }}
Value: {{ value.value }
{% endfor %}