Django filter JSONField list of dicts
Ejecuto Django 1.9 con el nuevo JSONField y tengo el siguiente modelo de prueba:
class Test(TimeStampedModel):
actions = JSONField()
Digamos que la acción JSONField se ve así:
[
{
"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",
}
}
]
Quiero poder filtrar las teclas foo1 y foo2 para cada elemento de la lista. Cuando lo hago :
>>> Test.objects.filter(actions__1__fixed_key_1="foo2")
La prueba está en el conjunto de consultas. Pero cuando lo hago :
>>> Test.objects.filter(actions__0__fixed_key_1="foo2")
No lo es, lo que tiene sentido. Quiero hacer algo como:
>>> Test.objects.filter(actions__values__fixed_key_1="foo2")
O
>>> Test.objects.filter(actions__values__fixed_key_2__values__contains="bar3")
Y tener la prueba en el conjunto de consultas.
¿Alguna idea de si esto se puede hacer y cómo?