Django JSONField isnull 查找
Posted
技术标签:
【中文标题】Django JSONField isnull 查找【英文标题】:Django JSONField isnull lookup 【发布时间】:2016-11-26 11:30:39 【问题描述】:据我所知,您不能在 django 本机 JSONField
上使用 __isnull
查找。在互联网上我发现this 不活跃的问题。
作为可能的解决方法,我们当然可以使用这些技巧:
model.objects.filter(field__contains='key': None)
,不太灵活,因为您可能需要查询多个键或其他任何内容。
model.objects.exclude(field__key=True).exclude(field__key=False)
,这很hacky,仅适用于布尔数据。
我希望有更好的方法((c) Raymond Hettinger)来做这件事。任何建议将不胜感激。现在,我将采用第一种方法
【问题讨论】:
【参考方案1】:根据this(见最后一条,结束评论),以下应该可以工作model.objects.filter(field__key=None)
(但显然你应该使用带有修复程序的Django版本)。
django docs
警告
由于任何字符串都可以是 JSON 对象中的键,因此任何查找其他 比下面列出的那些将被解释为键查找。没有错误 被提出。输入错误要格外小心,并经常检查 您的查询按您的意愿工作。
和here 他们是
【讨论】:
似乎field__key__isnull=True
也应该可以工作。这么多年过去了,这个问题终于有了答案。谢谢!
我无法让field__key__isnull=True
工作。查看上面链接中的代码更改,添加了JSONExact
查找,所以对我来说field__key__exact=None
也可以工作。以上是关于Django JSONField isnull 查找的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块 'django.contrib.postgres.fields' 没有属性 'JSONField'