Django Json 字段过滤器抛出查找错误
Posted
技术标签:
【中文标题】Django Json 字段过滤器抛出查找错误【英文标题】:Django Json field filter throws lookup error 【发布时间】:2018-03-02 09:14:22 【问题描述】:我用的是django postgres JSONfield,模型结构如下
from django.contrib.postgres.fields import JSONField
class JsonAnswer(models.Model):
name = models.CharField(max_length=255)
data = JSONField(default=)
Json 字段中的数据如下
"owner":
"name":"Bob",
"other_pets":[
"name":"fishy"
]
,
"bread":"lab"
而我的过滤查询是这样的
JsonAnswer.objects.filter(data__owner__name="Bob")
这是抛出错误
FieldError: Unsupported lookup 'owner' for JSONField or join on the field not permitted.
请说明如何过滤json字段数据
【问题讨论】:
可能与您的错误无关,但请确保在为 JSONField 设置默认值时,使用dict
或 dict()
而不是
,因为它“创建了一个可变的默认值,在JSONField 的所有实例”.. 见 docs
【参考方案1】:
在上面的代码中,JSONField
的类型正确,但错误表明该列在数据库中未定义为 jsonb
,无论出于何种原因(这就是我遇到的问题遇到类似的错误)。
【讨论】:
以上是关于Django Json 字段过滤器抛出查找错误的主要内容,如果未能解决你的问题,请参考以下文章
使用跨越关系的字段查找在 django 模型上进行链式过滤和排除