Python 2.7 Django Json字段筛选器引发查找错误

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":

我使用的是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":[
      {
       "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的所有实例之间共享的可变默认值”。。看见