更改 Django 查询中的字段名称

Change field names in a Django query

我有几个 Django 查询需要结合 .union()

但是 .union() 仅当所有字段名称都相同时才有效,实际情况并非如此。

那么,如何修改 Django 查询中的字段名称(比如在 SQL 中使用 AS 关键字)?

您可以使用 annotate() 为查询集中的每个项目添加一个新字段。然后使用 values() 以便您在联合中只 return 您想要的列。

MyModel.objects.annotate(new_name=F('old_name').values('new_name', 'other_field').union(
    MyOtherModel.objects.annotate(new_name=F('other_old_name').values('new_name', 'other_field')
)