在 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 查询集中编辑注释结果的主要内容,如果未能解决你的问题,请参考以下文章