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 方法
有人有什么建议吗?谢谢!
答案 0 :(得分:0)
Django具有Cast
函数,该函数可以在查询中使用。在该函数中,您可以指定FloatField(decimal_places=2)
答案 1 :(得分:0)
我尝试了这篇文章中的解决方案:Django ORM how to Round an Avg result
class Round(Func):
function = 'ROUND'
arity = 2
Book.objects.all().aggregate(Round(Avg('price'), 2))