新しい JSONField を使用して Django 1.9 を実行し、次の Test モデルを使用します。
class Test(TimeStampedModel):
actions = JSONField()
アクション JSONField が次のようになっているとします。
[
{
"fixed_key_1": "foo1",
"fixed_key_2": {
"random_key_1": "bar1",
"random_key_2": "bar2",
}
},
{
"fixed_key_1": "foo2",
"fixed_key_2": {
"random_key_3": "bar2",
"random_key_4": "bar3",
}
}
]
リストのすべての項目に対して foo1 および foo2 キーをフィルタリングできるようにしたいと考えています。私がする時 :
>>> Test.objects.filter(actions__1__fixed_key_1="foo2")
テストはクエリセットにあります。しかし、私がするとき:
>>> Test.objects.filter(actions__0__fixed_key_1="foo2")
そうではありません。私は次のようなことをしたい:
>>> Test.objects.filter(actions__values__fixed_key_1="foo2")
または
>>> Test.objects.filter(actions__values__fixed_key_2__values__contains="bar3")
そして、クエリセットにテストを入れます。
これができるかどうか、そしてどのように考えていますか?