我需要通过 JsonField 查询模型,我想获取所有具有空值 ([]) 的记录:
我使用了 MyModel.objects.filter(myjsonfield=[]) 但它不起作用,它返回 0 结果,尽管有记录具有 myjsonfield=[]
请您参考如下方法:
为此使用 dunder __exact。 __isnull=True 不起作用,因为 JSONField 在技术上不为空。
myjsonfield 为空的 MyModel 条目:
MyModel.objects.include(myjsonfield__exact=[])
myjsonfield 不为空的 MyModel 条目:
MyModel.objects.exclude(myjsonfield__exact=[])
https://docs.djangoproject.com/en/3.1/ref/models/querysets/#std:fieldlookup-exact
我相信如果您在模型中设置了 default=dict,那么您应该使用 {}(例如:myjsonfield__exact={}) 而不是 [] 但我还没有测试过。
