【问题标题】:Edit result of annotate in a Django queryset在 Django 查询集中编辑注释结果
【发布时间】:2020-07-04 06:36:58
【问题描述】:
我有一个查询集
queryset = BigTable.objects.values('field1__code', 'field2__code').annotate(Sum('field3'))
- 结果值 field3__sum = "1234567" 是一个整数,对于我的模板来说很长。
- 如何将其除以 1000(例如)并得到一个小数,如“1234,5”?
- 谢谢
【问题讨论】:
标签:
django
django-queryset
django-annotate
【解决方案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> }}