在django中通过空JsonField查询

时间:2015-07-08 23:04:35

标签: python django django-jsonfield

我需要通过JsonField查询模型,我想获取所有空值([])的记录:

我使用MyModel.objects.filter(myjsonfield=[])但是它不起作用,虽然记录中有myjsonfield=[]

,但它返回0结果

3 个答案:

答案 0 :(得分:1)

为此使用傻瓜 __exact__isnull=True 不起作用,因为 JSONField 在技术上不为空。

其中 myjsonfield 为空的 MyModel 条目:

MyModel.objects.include(myjsonfield__exact=[])

MyModel 条目,其中 myjsonfield not 为空:

MyModel.objects.exclude(myjsonfield__exact=[])

https://docs.djangoproject.com/en/3.1/ref/models/querysets/#std:fieldlookup-exact

我相信如果您在模型中设置了 default=dict,那么您应该使用 {}(例如:myjsonfield__exact={})而不是 [],但我还没有测试这个。

答案 1 :(得分:0)

尝试MyModel.objects.filter(myjsonfield='[]')

答案 2 :(得分:0)

JSONfield应该是default={},即字典,而不是列表。