0

addon_income = round(pendingAmount*0.1, 2)
print(addon_income)  # if pendingAmount = 6, addon_income = 0.6 which is ok here

Wallet.objects.filter(id=###).update(
    active=F('active')+addon_income, total=F('total')+addon_income,
    uddate_time=timezone.now()
)

在上面的查询集中,如果 F('active') = 41.2,F('total') = 41.2,addon_income = 0.6,则更新后 active 和 total 变为 41.800000000000004 和 41.800000000000004。

我尝试在查询集中使用 round() ,如下所示:

Wallet.objects.filter(id=###).update(
    active=round(F('active')+addon_income, 2), total=round(F('total')+addon_income, 2),
    uddate_time=timezone.now()
)

但它返回错误:类型 CombinedExpression 没有定义round方法

有人有什么建议吗?谢谢!

4

2 回答 2

0

我在这篇文章中尝试了解决方案:Django ORM how to Round an Avg result

class Round(Func):
  function = 'ROUND'
  arity = 2

Book.objects.all().aggregate(Round(Avg('price'), 2))

于 2019-04-25T06:31:42.417 回答
0

Django 有一个Cast可以在查询中使用的函数。在该函数中,您可以指定FloatField(decimal_places=2)

于 2019-04-24T09:01:28.610 回答