我需要通过 a 查询模型JsonField
,我想获取所有具有空值([])的记录:
我用过MyModel.objects.filter(myjsonfield=[])
,但它不工作,它返回 0 结果虽然有记录myjsonfield=[]
我需要通过 a 查询模型JsonField
,我想获取所有具有空值([])的记录:
我用过MyModel.objects.filter(myjsonfield=[])
,但它不工作,它返回 0 结果虽然有记录myjsonfield=[]
__exact
为此使用dunder 。__isnull=True
不起作用,因为 JSONField 在技术上不为空。
MyModel 条目myjsonfield
为空:
MyModel.objects.include(myjsonfield__exact=[])
MyModel 条目myjsonfield
不为空:
MyModel.objects.exclude(myjsonfield__exact=[])
https://docs.djangoproject.com/en/3.1/ref/models/querysets/#std:fieldlookup-exact
我相信如果你已经default=dict
在你的模型中设置了,那么你应该使用{}
(例如:)myjsonfield__exact={}
而不是[]
但我没有测试过这个。
JSONfield 应该是default={}
一个字典,而不是一个列表。
试试MyModel.objects.filter(myjsonfield='[]')
。