从Int到Float的Django Sum聚合

问题描述 投票:1回答:1

所以我以美分保存我的费用,但希望以欧元显示。转换问题是它首先将整数除以100,然后转换为float。它应该是相反的方式。我怎样才能做到这一点?

以下代码应说明我的问题:

>>> from django.db.models import F, FloatField, Sum
>>> from payment.models import Payment
>>> 
>>> paymentlist = Payment.objects.all()
>>> result = paymentlist.annotate(
...     fees_in_cents=Sum(F('fees'), output_field=FloatField())).annotate(
...         fees_in_euro=Sum(F('fees')/100, output_field=FloatField()))
>>> 
>>> print(result[0].fees_in_cents, result[0].fees_in_euro)
120.0 1.0

fee_in_euro显然应该是1.20

django django-models django-queryset
1个回答
2
投票

将费用价值除以100.0

例:

result = paymentlist.annotate(
    fees_in_cents=Sum(F('fees'), output_field=FloatField())).annotate(
    fees_in_euro=Sum(F('fees') / 100.0, output_field=FloatField())
)
© www.soinside.com 2019 - 2024. All rights reserved.