我需要通过JsonField
查询模型,我想获取所有空值([])的记录:
我使用MyModel.objects.filter(myjsonfield=[])
但是它不起作用,虽然记录中有myjsonfield=[]
答案 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={}
,即字典,而不是列表。