2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用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()
? ? )
)
對于某些數(shù)據(jù)庫,這是由于類型推斷造成的。在這種情況下,您可以使用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貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
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}]>
現(xiàn)在工作了
添加回答
舉報(bào)