I need to query a model by a JsonField, I want to get all records that have empty value ([]):
I used MyModel.objects.filter(myjsonfield=[]) but it's not working, it returns 0 result though there's records having myjsonfield=[]
Use the dunder __exact for this. The __isnull=True does not work because the JSONField is technically not null.
MyModel entries where myjsonfield is empty:
MyModel.objects.include(myjsonfield__exact=[])
MyModel entries where myjsonfield is not empty:
MyModel.objects.exclude(myjsonfield__exact=[])
https://docs.djangoproject.com/en/3.1/ref/models/querysets/#std:fieldlookup-exact
I believe if you've set the default=dict in your model then you should use {} (eg: myjsonfield__exact={}) instead of [] but I haven't tested this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With