首页 > 解决方案 > 如何在 Django ORM 中获取常量列?

问题描述

我正在学习ORM。但是,即使在阅读文档后,我也有一些事情我不明白。

如何在 Django ORM 中获取常量列?

SQL 在这里。

select *, 'a' as a from book;

这是我尝试过的查询集

Book.objects.annotate(a=Value('a'))

错误就在这里。

django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field

标签: pythondjango

解决方案


执行您的代码时,我收到以下错误:

FieldError('Cannot resolve expression type, unknown output_field')

这意味着 django 不知道您的注释字段应该导致的类型。

要解决此问题,您需要将注释包装在ExpressionWrapper

from django.db.models import Value, ExpressionWrapper

Book.objects.annotate(a=ExpressionWrapper(
    Value('a'), 
    output_field=models.CharField(max_length=45),
))

推荐阅读