2 回答
TA贡献1796条经验 获得超7个赞
您可以使用ExpressionWrapper
[Django-doc]指定输出格式:
from django.db.models import ExpressionWrapper, FloatField
.annotate(
nomberhodor=Sum('nomberhodor'),
nomberesteda=Sum('nomberesteda'),
percent=ExpresssionWrapper(
F('nomberhodor')*100/F('nomberesteda'),
output_field=FloatField()
)
)
对于某些数据库,这是由于类型推断造成的。在这种情况下,您可以使用Cast:
from django.db.models import FloatField
from django.db.models.functions import Cast
.annotate(
nomberhodor=Sum('nomberhodor'),
nomberesteda=Sum('nomberesteda'),
percent=Cast(F('nomberhodor'), output_field=FloatField()) *
100/F('nomberesteda')
)
)
TA贡献1890条经验 获得超9个赞
percent=ExpressionWrapper(Cast(F('nomberhodor'), FloatField())/F('nomberesteda'),
output_field=FloatField()))
print(listilam):
<QuerySet [{'percent': 0.23333333333333334},
{'percent': 0.4266666666666667},
{'percent': 0.5}, { 'percent': 0.25},
{'percent': 0.30344827586206896},
{'percent': 0.63},
{'percent': 0.3395604395604396}]>
现在工作了
添加回答
举报