【问题标题】:Sum Product using Django ORM使用 Django ORM 对产品求和
【发布时间】:2019-02-07 10:21:33
【问题描述】:

我需要从 Django 查询集中计算两个字段的 sumproduct。

我已经检查了答案 Django Aggregation: Summation of Multiplication of two fields 但它不起作用。 他们为 django

from django.db.models import Sum
MyModel.objects.filter(<filters>).aggregate(Sum('field1', field="field1*field2"))

返回 'field1' 的总和,而不是定义的 field="field1*field2"

对于 django >= 1.8

from django.db.models import Sum, F
MyModel.objects.filter(<filters>).aggregate(Sum(F('field1')*F('field2')))

返回 TypeError:复杂聚合需要别名

【问题讨论】:

  • 你的 Django 版本是多少?
  • @MohammadUmair 我的 Django 版本是 2.1.2,我检查了链接中建议用于 django >= 1.8 的第二个代码,但效果不佳
  • from django.db.models import Sum, F MyModel.objects.filter().aggregate(Sum(F('field1')*F('field2')))跨度>
  • 我收到错误“复杂聚合需要别名”
  • 您没有指定该总和的存储位置

标签: python django-models django-queryset


【解决方案1】:

试试这样的

from django.db.models import Sum, F
MyModel.objects.filter(<filters>).aggregate(sum=Sum(F('field1')*F('field2')))["sum"]

【讨论】:

  • 现在试过了。我得到 FieldError: Expression contains mixed types。您必须设置 output_field。
  • 感谢它的工作。我搜索了这个错误并通过stackoverflow.com/questions/38546108/…解决了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2021-05-03
  • 2021-11-03
  • 2018-06-05
相关资源
最近更新 更多