9

据我所知,您不能__isnull在 django native 上使用查找JSONField。在互联网上,我发现了这个不活跃的问题。作为可能的解决方法,我们当然可以使用这些技巧:

  1. model.objects.filter(field__contains={'key': None}),这不是那么灵活,因为您可能需要查询多个键或其他什么。

  2. model.objects.exclude(field__key=True).exclude(field__key=False),这是 hacky 并且仅适用于布尔数据。

我希望有更好的方法((c)Raymond Hettinger)来做这件事。任何建议将不胜感激。现在,我将采用第一种方法

4

1 回答 1

6

根据这个(请参阅最后的结束评论),以下应该可以工作 model.objects.filter(field__key=None)(但显然你应该使用带有 fix 的 Django 版本)。

django文档

警告

由于任何字符串都可以是 JSON 对象中的键,因此除下面列出的以外的任何查找都将被解释为键查找。不会引发错误。输入错误要格外小心,并始终按照您的意图检查您的查询。

他们在这里

于 2018-04-21T12:59:27.760 回答