Skip to main content
 首页 » 编程设计

python之通过 django 中的空 JsonField 查询

2024年10月24日34zdz8207

我需要通过 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={}) 而不是 [] 但我还没有测试过。