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}]>
現在工作了
添加回答
舉報