在Django中由.annotate()创建的字段上使用.extra()

jnn*_*nns 15 django django-queryset

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

以下可能会更好地描述我所追求的但导致Unknown column in field list-Error:

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

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

关于如何解决这个问题的任何想法都非常感谢.

yed*_*tko 6

这就是你想要的?

items = MyModel.objects.extra(
    select = {'sum_field1_field2': 'SUM(relatedModel__someField) + SUM(relatedModel__someField)'},
)
Run Code Online (Sandbox Code Playgroud)