[英]Query by empty JsonField in django
我需要通過 JsonField 查詢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={}
)而不是[]
但我沒有測試過這個。
JSONfield 應該是default={}
即字典,而不是列表。
首先,Django 實際上建議您使用不可變/可調用的默認值聲明 JSONField。 對於你的例子:
class MyModel(models.Model): myjsonfield = models.JSONField(null=True, default=list)
其次,通過null
JSONField查詢:
MyModel.objects.filter(myjsonfield__isnull=True)
要查詢具有default
值的字段(在您的情況下為[]
):
MyModel.objects.filter(myjsonfield__exact=[])
有關詳細信息和示例,請參閱https://docs.djangoproject.com/en/4.0/topics/db/queries/#querying-jsonfield 。
試試MyModel.objects.filter(myjsonfield='[]')
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.