在Django模板中遍历数据
我在一个视图中处理查询集,目的是获取数据的总结,并且需要在我的模板中遍历结果数据集。我之前用一个键和一个值的方法做得还不错,通过构建一个字典,然后使用 .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)
任何帮助都将非常感激!
提前谢谢你们!
Rich
1 个回答
2
我试着用一个字典来创建另一个字典,把字典作为值,但在模板中我无法访问这个字典里的值。
为什么不行呢?这些值也是键/值对呀……
{% 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 %}