2

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) 関連のクエリをサポートしています

上記の必要性を照会するための良いアプローチは何ですか?

4

1 に答える 1

0

HStoreFieldの代わりに を使用すると、のルックアップJSONFieldにアクセスできるようになります。

MyModel.objects.filter(data__values__contains='value4')

Django docsに記載されているように、JSON フィールドには次のルックアップのみがあります。

封じ込めと鍵操作¶

JSONField は、格納とキーに関連するルックアップを HStoreField と共有します。

  • 含む (単なる文字列の辞書ではなく、任意の JSON を受け入れます)
  • contains_by (単なる文字列の辞書ではなく、任意の JSON を受け入れます)
  • has_key
  • has_any_keys
  • has_keys
于 2016-10-12T22:24:00.857 に答える