我怎样才能用Django ojbect取整一笔款项

2024-10-04 05:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

verloningsoverzicht_cumulatief_dagen = 
Overzicht.objects.filter(periode=periode, jaar=jaar) 
            .values('testcontract', 'contract') 
            .annotate(aantal=Sum('aantal'))

现在让我们假设.annotatie总和是6.3500000,我希望它四舍五入到6.35 圆形法不起作用,我如何解决这个问题

.annotate(aantal=round(Sum('aantal'),2))

Tags: 代码objectsfiltervaluessumcontractannotateperiode
1条回答
网友
1楼 · 发布于 2024-10-04 05:24:28

您可以使用^{} expression [Django-doc]

from django.db.models.functions import Round

verloningsoverzicht_cumulatief_dagen = Overzicht.objects.filter(
    periode=periode, jaar=jaar
) .values('testcontract', 'contract').annotate(
    aantal=Round(Sum('aantal'), 2)
)

如果使用或更早版本,则可以使用:

from django.db.models import DecimalField, ExpressionWrapper
from django.db.models.functions import Round

verloningsoverzicht_cumulatief_dagen = Overzicht.objects.filter(
    periode=periode, jaar=jaar
) .values('testcontract', 'contract').annotate(
    aantal=ExpressionWrapper(
        Round(Sum('aantal') * 100) / 100,
        output_field=DecimalField(max_digits=12, decimal_places=2)
    )
)

相关问题 更多 >