我有这个代码:
q = MyModel.objects.order_by('-value1').annotate(
res=ExpressionWrapper(
(F('value1') / F('value2')),
output_field=FloatField()),
)
for i in q:
print(i.value1, i.value2, i.res)
因此,输出将是:
5 10 0.0
1 2 0.0
但是我需要
5 10 0.5
1 2 0.5
Wy F() 四舍五入结果?如何不这样做?
谢谢!
最佳答案
只需利用F()
对乘法的支持即可将一个因数转换为十进制数。
组合表达式看起来像:
from decimal import Decimal
q = MyModel.objects.order_by('-value1').annotate(
res=ExpressionWrapper(
(F('value1') * Decimal('1.0') / F('value2')),
output_field=FloatField()),
)
我发现这种更优雅的方法是在 value1 字段上编写原始 SQL CAST,然后进行除法。
关于python - Django F() 除法 - 如何避免四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091812/