我有一个已支付的价值列表,并希望显示已支付的总金额.我使用聚合和Sum一起计算值.问题是,我只想打印出总价值,但是Aggregation打印出来:{'amount__sum': 480.0}(480.0是增加的总价值.

在我看来,我有:

    from django.db.models import Sum

    total_paid = Payment.objects.all.aggregate(Sum('amount'))

为了在页面上显示值,我有一个包含以下内容的mako模板:

    <p><strong>Total Paid:</strong> ${total_paid}</p>

我怎样才能让它显示480.0而不是{'amount__sum': 480.0}

推荐答案

我不相信有一种方法可以只得到价值.

你可以在你的模板中只做${{ total_paid.amount__sum }}.或者在你看来做total_paid = Payment.objects.all().aggregate(Sum('amount')).get('amount__sum', 0.00).

EDIT

正如其他人所指出的那样,.aggregate()将始终返回一个字典,其中包含来自聚合的所有键,因此没有必要对结果执行.get().但是,如果查询集为空,则每个聚合值将为None.因此,根据您的代码,如果您需要一个浮点数,则可以执行以下操作:

total_paid = Payment.objects.all().aggregate(Sum('amount'))['amount__sum'] or 0.00

Django相关问答推荐

Django-Values()并按月分组

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

__init__()获取了意外的关键字参数';id';

如何在 Django 中设置与 Session 相关的字段

在Django测试get方法中获取HttpResponseNotFound

在 Django 4.1 中提交表单之前显示数据

如何在 Django REST Framework API 响应中使用多标签过滤器?

django 创建多种类型用户的最佳方法

使用 Django 和 South 重命名应用程序

Django 模板上的 URL 编码

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

将 XML 从 URL 解析为 python 对象

如何在 Django 中触发 500 错误?

如何从 Django 的 TabularInline 管理视图中省略对象名称?

Celery - 在一台服务器上运行不同的工作人员

如何在保存之前更改 Django 表单字段值?

Django:以 10 为底的 int() 的无效文字

警告:找不到分发的 svn 位置==0.6.16dev-r0

XlsxWriter 对象另存为 http 响应以在 Django 中创建下载