更改 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')
)
我有几个 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')
)