AttributeError:“CombinedExpression”对象没有属性“default\u alias”

2024-04-25 05:03:01 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图减去两个不同的列时,我得到了一个错误:

>>> Product.objects.annotate(Sum('producttransactiondetails__purchase_quantity') - Sum('producttransactiondetails__sales_quantity'))
Traceback (most recent call last):
  File "/usr/lib/python3.6/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<console>", line 1, in <module>
  File "/home/....env/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/.....env/lib/python3.6/site-packages/django/db/models/query.py", line 1032, in annotate
    if arg.default_alias in kwargs:
AttributeError: 'CombinedExpression' object has no attribute 'default_alias'

以下是模型:

^{pr2}$

Tags: inpyselfenvhomelibpackagesline
1条回答
网友
1楼 · 发布于 2024-04-25 05:03:01

尚未为组合表达式指定列名。在

annotate()子句的输出是一个QuerySet;这个QuerySet可以使用任何其他QuerySet操作进行修改。所以每个值都必须在一列中,每一列都需要一个名称(您忘了加上)

Product.objects.annotate(in_stock_quantity=Sum('producttransactiondetails__purchase_quantity') - Sum('producttransactiondetails__sales_quantity'))

注意这里的in_stock_quantity=

相关问题 更多 >