我有一個自定義的JSON模型X
田間data
可能會或可能不會有這些鍵:key1
,key2
,key3
。 我需要一種方式來篩選所有與key1
實例。Django的過濾器,如果在JSON可選鍵存在
我也試着這樣做:
queryset = X.objects.all()
queryset = queryset.annotate(
has_key1=(
Case(
When(~Q(data__key1__in=[None, '']), then=True),
default=False,
output_field=models.BooleanField())
)
)
但queryset.filter(has_key1=True)
返回任何竟然有一些記錄與KEY1。
直接過濾器:queryset.filter(data__key1__in=[1])
工作正常。 任何人都有解決這個問題的方法嗎?謝謝。
您是否在使用帶'JSONField'類的PosgreSQL?我不認爲你可以使用它來搜索密鑰。 – themanatuf
這是一個自定義的jsonfield,它將python字典序列化爲json字典並返回。 PG是我的db –
其實我錯了。有一個'has_key'方法:https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#std:fieldlookup-hstorefield.has_key – themanatuf