使用基数10"获得int()的无效文字; DecimalField的错误

时间:2016-06-23 09:47:06

标签: django

我试图在django中执行sumproduct查询:

merchandise_value = Product.objects.all()\
    .aggregate(merch_value=Sum(F('qty_ordered')*F('msrp')))

'msrp'DecimalField字段(包含2 decimal_places)。 'qty_ordered'IntegerField。即使我做了int(float(F('msrp')))int(float(str(F('msrp'))))等疯狂的事情,我仍然会得到:

invalid literal for int() with base 10: 'F(msrp)'

其他类似的问题提出了与我所使用的类似的解决方案。我搞砸了什么?也许更重要的是,为什么要调用int()以某种方式集成到该行?我没有明确地调用int()

1 个答案:

答案 0 :(得分:0)

所以,我想在这种情况下你应该output_field=FloatField()明确地调用Sum来获取所需的输出数据类型,因为数据库操作可能不会决定这两种数据类型:

from django.db.models import F, FloatField, Sum
...
merchandise_value = Product.objects.all()\
    .aggregate(merch_value=Sum(F('qty_ordered')*F('msrp'),output_field=FloatField()))

看看这个Django examples