在 Django orm 查询中指定 sql 表达式作为列名

Specify sql expression as column name in a django orm query

看看这个查询:

select 'DEFAULT_STRING' as category from foo

在这里,我们实际上并没有table中的列category,而是我们只是用一个字符串文字来表示查询返回的所有行中的这个列值。我们可以使用上面任何有效的 SQL 表达式来代替字符串文字。有什么方法可以在 django ORM 中进行此查询吗?

一个方便的方法是 annotateRawSQL 查询表达式。

from django.db.models.expressions import RawSQL
qset = Foo.objects.annotate(category=RawSQL("select 'DEFAULT_CATEGORY'", ()))

如果有更好的方法,请在答案中告诉我。