我需要通过 JsonField
查询模型,我想获取所有具有空值 ([]) 的记录:
我使用了 MyModel.objects.filter(myjsonfield=[])
但它不起作用,虽然有 myjsonfield=[]
的记录,但它返回 0 结果
最佳答案
为此使用 dunder __exact
。 __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={}
)而不是 []
但我还没有测试过这个。
关于python - 通过 Django 中的空 JsonField 查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31305340/