gpt4 book ai didi

Django 注释平均查询不显示小数位

转载 作者:行者123 更新时间:2023-11-29 13:09:55 25 4
gpt4 key购买 nike

我正在使用 Django,我正在对一些列值取平均值,但是结果是四舍五入的,我想把它保留一到两位小数。我的目标是看到结果看起来像 3.5 而不是 4

我的模型名为 Application,列具有 IntegerField 模型类型。我的数据库是 PostgreSQL。

这是我目前用来计算列值平均值的查询:

ratings = Application.objects.filter(id = review.id).annotate(rate = (F('col_1')+F('col_2')+F('col_3')+F('col_4')+F('col_5')+F('col_6'))/6)

我已经尝试过使用 FloatField,但也许我做错了。

有什么建议吗?

提前致谢!

编辑:这是我的列模型。

col_1 = models.IntegerField(choices=USER_CHOICE)
...
col_6 = models.IntegerField(choices=USER_CHOICE)

最佳答案

您可以使用 ExpressionWrapper [Django-doc]在这里将其设置为 FloatField [Django-doc]DecimalField:

from django.db.models import <b>ExpressionWrapper</b>, FloatField

ratings = Application.objects.filter(id=review.id).annotate(
rate=<b>ExpressionWrapper(</b>
(F('col_1')+F('col_2')+F('col_3')+F('col_4')+F('col_5')+F('col_6'))/6,
<b>output_field=FloatField()</b>
<b>)</b>
)

根据情况,使用 FloatFieldDecimalField [Django-doc] 可能会更好.

关于Django 注释平均查询不显示小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56315108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com