问题描述
我有一个已支付价值的列表,并希望显示已支付的总金额.我使用聚合和 Sum 一起计算值.问题是,我只想打印总值,但聚合打印出: {'amount__sum': 480.0} (480.0 是增加的总值.
I have a list of values paid and want to display the total paid. I have used aggregation and Sum to calculate the values together. The problem is,I just want the total value printed out, but aggregation prints out: {'amount__sum': 480.0} (480.0 being the total value added.
在我看来,我有:
from django.db.models import Sum
total_paid = Payment.objects.all.aggregate(Sum('amount'))
为了在页面上显示值,我有一个带有以下内容的 mako 模板:
And to show the value on the page, I have a mako template with the following:
<p><strong>Total Paid:</strong> ${total_paid}</p>
如何让它显示 480.0 而不是 {'amount__sum': 480.0}?
How would I get it to show 480.0 instead of {'amount__sum': 480.0}?
推荐答案
我不相信有办法只获得价值.
I don't believe there is a way to get only the value.
您可以在模板中执行 ${{ total_paid.amount__sum }}.或者在你的视图中执行 total_paid = Payment.objects.all().aggregate(Sum('amount')).get('amount__sum', 0.00).
You could just do ${{ total_paid.amount__sum }} in your template. Or do total_paid = Payment.objects.all().aggregate(Sum('amount')).get('amount__sum', 0.00) in your view.
编辑
正如其他人指出的那样,.aggregate() 将始终返回一个字典,其中包含来自聚合的所有键,因此在 .get() 上执行结果是不必要的.但是,如果查询集为空,则每个聚合值将是 None.因此,根据您的代码,如果您期望浮动,您可以这样做:
As others have pointed out, .aggregate() will always return a dictionary with all of the keys from the aggregates present, so doing .get() on the result is not necessary. However, if the queryset is empty, each aggregate value would be None. So depending on your code, if you are expecting a float, you could do:
total_paid = Payment.objects.all().aggregate(Sum('amount'))['amount__sum'] 或 0.00
这篇关于Django聚合:仅求和返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)