【问题标题】:django postgres JSONField | query to check in list(contains) of valuesdjango postgres JSONField |查询以签入值列表(包含)
【发布时间】:2017-02-21 10:55:11
【问题描述】:

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 支持“keys”(has_key, has_any_keys, has_keys) 相关查询

什么是查询上述需求的好方法?

【问题讨论】:

    标签: django postgresql django-jsonfield


    【解决方案1】:

    使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 2017-03-05
      • 2021-09-23
      • 1970-01-01
      • 2016-05-10
      相关资源
      最近更新 更多