2016-10-12 15 views
2

のリストにチェックするためのクエリ(含まれている)、私たちは、そのエントリは次のようになります(モデルに)JSONFieldを使用している:django postgres JSONField | (<strong>postgresdb</strong>を使用して)<strong>ジャンゴ1.9</strong>で値

**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" 
} 

私は、Djangoは "キー"(has_key、has_any_keys、has_keys)関連クエリ

Whのためのサポートを持っている

、値のためで照会するdata__value__containsの= 'value4' のような何かをしたいですで上記のニーズを照会するための良いアプローチですか?

答えて

0

JSONFieldの代わりにHStoreFieldを使用すると、valuesにアクセスできます。

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

Django docsで述べたように、JSONフィールドのみこれらの検索があります。

包含関係およびキーoperations¶封じ込めおよびHStoreFieldとキーに関連する

JSONField共有検索を。

  • は含まれてい
  • has_any_keysを
  • contained_by(文字列だけの辞書ではなく、任意のJSONを受け入れ)
  • has_key(文字列だけの辞書ではなく、任意のJSONを受け入れ)
  • has_keys
関連する問題