这是我目前的代码:
data = data.values('number_of_houses',
'total',
'old_price',
)
return data.aggregate(number_of_houses_new=Sum('number_of_houses'),
total_new=Sum('total'),
house_percentage_new=Sum('number_of_houses') / Sum('total'),
old_price_new=Avg('old_price', output_field=IntegerField())
)
我的问题在于house_percentage_new
。该值始终为0.如何分割两个和?
我正在使用Django 1.11和Python 3.6
答案 0 :(得分:1)
除以整数总是将数字向下舍入(楼层),因此如果除法结果在0和1之间,它将始终为0. Django ORM中的解决方法是添加ExpressionWrapper
并指定{{1像这样的输出字段:
FloatField
PS。你可能只是浮动一个操作数,但由于我现在无法测试它,这取决于你。而且这可能也有效 - 也可能不起作用:
house_percentage_new=ExpressionWrapper(Sum('number_of_houses'), output_field=models.FloatField()) / ExpressionWrapper(Sum('total'), output_field=models.FloatField())