在 Django 查询集中编辑注释结果

Posted

技术标签:

【中文标题】在 Django 查询集中编辑注释结果【英文标题】:Edit result of annotate in a Django queryset 【发布时间】:2020-07-04 06:36:58 【问题描述】:

我有一个查询集

queryset = BigTable.objects.values('field1__code', 'field2__code').annotate(Sum('field3'))
结果值 field3__sum = "1234567" 是一个整数,对于我的模板来说很长。 如何将其除以 1000(例如)并得到一个小数,如“1234,5”? 谢谢

【问题讨论】:

【参考方案1】:

您可以将总和除以 1'000,方法是将其包装在 Value(..) 中:

from django.db.models import FloatField, Sum, Value

queryset = BigTable.objects.values(
    'field1__code', 'field2__code'
).annotate(
    field3_sum=Sum('field3', output_field=FloatField())/Value(1000, output_field=FloatField())
)

然而,最好将您的字段命名为field3_sum,因为这会产生错误的印象。例如,也许您可​​以使用field3_sumdiv1000

在您的模板中,您可以使用|floatformat template filter [Django-doc] 进行渲染,例如:

 object.field3_sum<b>|floatformat</b> 

【讨论】:

以上是关于在 Django 查询集中编辑注释结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 查询集中使用条件注释 Count

Django 多注解返回错误结果

Django框架03

Django框架03

带有夏季注释编辑器的 Django 管理页面导致切换扩展使其看起来很奇怪

Django 使用注释更新查询集