django - 在 Django 中通过 .annotate() 创建的字段上使用 .extra()

标签 django django-queryset

我想检索表中每个对象的两个字段(它们本身就是聚合)的总和。

以下内容可能会更好地描述我所追求的内容,但会导致字段列表中出现未知列-错误:

items = MyModel.objects.annotate(
                field1=Sum("relatedModel__someField"),
                field2=Sum("relatedModel__someField")).extra(
                        select={"sum_field1_field2": "field1 + field2"})

我还尝试使用 F() 进行字段查找,但这给了我一个无效的 sql 语句。

非常感谢任何有关如何解决此问题的想法。

最佳答案

这就是你想要的吗?

items = MyModel.objects.extra(
    select = {'sum_field1_field2': 'SUM(relatedModel__someField) + SUM(relatedModel__someField)'},
)

关于django - 在 Django 中通过 .annotate() 创建的字段上使用 .extra(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899014/

相关文章:

python - 在 Django 中生成给定查询集的所有可能子集

django - 用平均日期差异注释查询集? (django)

django - 如何让简单的外键模型工作? (另一个类中的类列表)

Django:返回 values_list 的字典列表?

django - Django Model中的抽象继承,导致MAX递归深度错误

python - 在 Django 和 Django REST Framework 中使用保留字 "class"作为字段名

python - Django 密码重置不适用于 django-anymail

python - 从 Django QuerySet 获取所有相关的多对多对象

python - 在测试用例中使用 django-reversion 时如何为测试对象创建初始修订

python -Django : Page Not found