在 django 1.9 (使用 postgresdb )中,我们正在使用 JSONField (在模型中),其条目看起来像这样:
**Entry 1**(in a row of that table):
data: {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
**Entry 2**(in a row of that table):
data: {
"key5": "value4",
"key6": "value2",
"key7": "value2",
"key8": "value4"
}
我想查询值,例如data__value__contains =' value4'
Django支持"键"(has_key,has_any_keys,has_keys)相关查询
查询上述需求的好方法是什么?
答案 0 :(得分:0)
如何使用HStoreField
代替JSONField
,然后可以访问values查找。
MyModel.objects.filter(data__values__contains='value4')
如Django docs中所述,JSON字段只有这些查找:
遏制和关键操作¶
JSONField与HStoreField共享与包含和密钥相关的查找。
- 包含(接受任何JSON而不仅仅是字符串字典)
- contained_by(接受任何JSON而不仅仅是字符串字典)
- 对象的has_key
- has_any_keys
- has_keys