Django:来自两个总和的除法输出

时间:2017-09-18 12:40:37

标签: python django python-3.x

这是我目前的代码:

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

1 个答案:

答案 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())