我使用新的 JSONField 运行 Django 1.9 并具有以下测试模型:
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")
并在查询集中进行测试。
知道这是否可以做到以及如何做到吗?