我有以下情况
class MyModel(models.Model):
my_field = JSONField(null=True, blank=True)
my_field
是一个具有以下结构的 JSON 字段:
{
"name": "some name"
"id": "some hash id"
}
我想执行类似的操作:
MyModel.objects.values(my_field__name)
这将等同于 postgres 查询:select my_field->>'name' from my_app_my_model
但我似乎无法让 django 生成所需的查询。
我得到的错误是:
FieldError: Cannot resolve keyword 'name' into field. Join on 'my_field' not permitted.
这里的主要目标是提供一个名为 fields
的字符串列表并运行以下命令:
MyModel.objects.values(*fields)
所以我认为原始 sql 解决方案不适合这里。自定义查找用于 WHERE
子句,我不知道 SELECT
子句有任何等效项。
想过如何做到这一点吗?
谢谢!
最佳答案
目前 values
不支持 json 查找。您可以尝试使用 extra 来完成.
MyModel.objects.extra(select={'name':"my_field->>'name'"}).values('name')
关于django - 从查询集中的 jsonfield 中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400569/