Python 2.7 Django Json字段筛选器引发查找错误
我使用的是django postgres JSONfield,模型结构如下Python 2.7 Django Json字段筛选器引发查找错误,python-2.7,django-1.9,django-jsonfield,Python 2.7,Django 1.9,Django Jsonfield,我使用的是django postgres JSONfield,模型结构如下 from django.contrib.postgres.fields import JSONField class JsonAnswer(models.Model): name = models.CharField(max_length=255) data = JSONField(default={}) { "owner":{ "name":"Bob", "other_pets":
from django.contrib.postgres.fields import JSONField
class JsonAnswer(models.Model):
name = models.CharField(max_length=255)
data = JSONField(default={})
{
"owner":{
"name":"Bob",
"other_pets":[
{
"name":"fishy"
}
]
},
"bread":"lab"
}
Json字段中的数据如下所示
from django.contrib.postgres.fields import JSONField
class JsonAnswer(models.Model):
name = models.CharField(max_length=255)
data = JSONField(default={})
{
"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
,但错误表明该列在数据库中未定义为jsonb
,无论出于何种原因(这就是我遇到类似错误时遇到的问题).可能与您的错误无关,但请确保在为JSONField设置默认值时,使用dict
或dict()
而不是{}
,因为它“创建了一个可在JSONField的所有实例之间共享的可变默认值”。。看见