通过 Django 中的空 JsonField 查询

mou*_*u55 5 python django django-jsonfield

我需要通过 a 查询模型JsonField,我想获取所有具有空值 ([]) 的记录:

我使用过MyModel.objects.filter(myjsonfield=[])但它不起作用,尽管有记录,但它返回 0 结果myjsonfield=[]

The*_*eke 6

__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={})而不是[]但我还没有测试过这一点。


zxz*_*zak -1

尝试MyModel.objects.filter(myjsonfield='[]')。