在Django模板中遍历数据

2 投票
1 回答
2544 浏览
提问于 2025-04-17 04:56

我在一个视图中处理查询集,目的是获取数据的总结,并且需要在我的模板中遍历结果数据集。我之前用一个键和一个值的方法做得还不错,通过构建一个字典,然后使用 .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 %}

撰写回答