Я запускаю Django 1.9 с новым JSONField и имею следующую тестовую модель:
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")
И проверите тест в наборе запросов.
Любая идея, если это можно сделать и как?