使用DJANGO 我有一个简单的模型,该模型具有字段Customer_ID,Date,Product,Total_price。我想按日期按组显示它们,所以该日期的所有价格都按组显示 例如
28 April 2020
Crisps £1.20
Cheese £1.40
29 April 2020
Crisps £1.80
Cheese £3.40
然后我该如何显示每个日期的总价格(例如,2.60英镑,5.20英镑) 这是我在html中尝试过的方法,所有的显示效果都很好,但是最后一个用于计算总和的标记不起作用:
{% regroup results by Date as new_list %}
{% for Date, results2 in new_list %}
<div class="track-row">
<span class="track-item track1">{{ Date }}</span>
{% for data in results2 %}
<div>
<span class="track-item track3">{{ data.Stock }}</span>
<span class="track-item track5">£{{ data.Sell_price }}+vat</span>
<span class="track-item track4">{{ data.Quantity }}</span>
<span class="track-item track5">£{{ data.Total_price }}+vat</span>
</div>
{% endfor %}
<h6 class="title4">£{{ data.Total_price__sum }} + vat</h6>
</div>
{% endfor %}
在我的views.py中,我创建了一个包含所有总计的查询集:
total = Quotes.objects.values('Customer_ID', 'Date').filter(Customer_ID=customer_id).\
annotate(total_price=Sum('Total_price')).order_by('-Date')
,这很好,可以给我正确的总数,但是如何在HTML旁边显示这些结果。
我尝试过:
{% for data2 in total %}
<h6 class="title4">£{{ data2.total_price }} + vat</h6>
{% endfor %}
效果很好,但只显示所有总数 我可以从上面的查询集中选择每条记录,然后将其放在我的相应列表旁边,还是可以通过另一种方式显示每组中我的价格总和 任何帮助表示赞赏
答案 0 :(得分:0)
一种方法是实现一个简单的自定义过滤器,该过滤器将列表作为参数并返回总和。
样本布局
myapp/
__init__.py
models.py
templatetags/
__init__.py
myapp_extras.py
views.py
myapp_extras.py
from django import template
register = template.Library()
@register.filter(is_safe=True)
def sum_total_price(value):
sum = 0
for v in value:
sum += v.Total_price
return sum
然后在模板中,首先加载过滤器,
{% load myapp_extras %}
最后使用它,
<h6 class="title4">£{{ result2|sum_total_price }} + vat</h6>