Python Django模板中的总计/小计
我对一个简单的问题很难理解。如何在django模板中计算总计和小计 假设我想生成客户订单的报告,类似于:Python Django模板中的总计/小计,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我对一个简单的问题很难理解。如何在django模板中计算总计和小计 假设我想生成客户订单的报告,类似于: Desired Report Output Customer1 1 Widgets $ 2 1 Bobbins $ 1 Subtotal $ 3 Customer2 2 Widgets $ 4 2 Bobbins $ 2 Subtotal $ 6 TOTA
Desired Report Output
Customer1
1 Widgets $ 2
1 Bobbins $ 1
Subtotal $ 3
Customer2
2 Widgets $ 4
2 Bobbins $ 2
Subtotal $ 6
TOTAL $ 9
假设我们在视图中填充了一个字典
orgs = {}
orgs['Customer1'] = [
{ 'qty': 1, 'descr' : 'Widgets', 'price': 2 },
{ 'qty': 1, 'descr' : 'Bobbins', 'price': 1 },
]
...
还有这样一个模板:
{% for org,orders in orgs.items %}
<p>{{ org }}
{% for order in orders %}
<ul>
<li>{{ order.qty }}</li>
<li>{{ order.descr }}</li>
<li>{{ order.price }}</li>
</ul>
...
{%用于组织,orgs.items%中的订单]
{{org}
{订单%中的订单为%0}
- {{order.qty}
- {{order.descr}}
- {{order.price}}
...
你知道如何计算总数/小计吗
我知道基本建议是在视图中这样做,但我不知道如何将其放入orgs目录中。根据django文档()的说法,尝试使用并行数据结构似乎是不可能的
有什么想法吗?与其说组织键的值是字典列表,不如说它是一个字典,其中一个键名为
orders
,另一个键名为subtotal
如果组织词典被传入,下面是您如何更改它的
total = 0
for org in orgs:
orders = orgs[org]
subtotal = sum(order['qty']*order['price'] for order in orders)
total += subtotal
orgs[org] = {'orders': orders, 'subtotal': subtotal}
现在,在模板中,您可以执行以下操作:
{% for org,org_data in orgs.items %}
<p>{{ org }}
{% for order in org_data.orders %}
<ul>
<li>{{ order.qty }}</li>
<li>{{ order.descr }}</li>
<li>{{ order.price }}</li>
</ul>
{% endfor %}
Subtotal: {{ org_data.subtotal }}
</p>
{% endfor %}
<p>Total: {{total}}</p>
{%用于组织,orgs.items%}
{{org}
{对于org_data.orders%}
- {{order.qty}
- {{order.descr}}
- {{order.price}}
{%endfor%}
小计:{{org_data.Subtotal}
{%endfor%}
总计:{{Total}