【问题标题】:Django Json field filter throws lookup errorDjango Json 字段过滤器抛出查找错误
【发布时间】: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 设置默认值时,使用 dictdict() 而不是 {},因为它“创建了一个可变的默认值,在JSONField 的所有实例”.. 见 docs

标签: python-2.7 django-1.9 django-jsonfield


【解决方案1】:

在上面的代码中,JSONField 的类型正确,但错误表明该列在数据库中未定义为 jsonb,无论出于何种原因(这就是我遇到的问题遇到类似的错误)。

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2017-03-03
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多