我使用具有新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")
你是否有任何想法可以在查询集中进行测试,如何实现?
TypeError: Lookup type 'contains' not supported with list argument
,通过操作查询来减少错误,如下所示:Test.objects.filter(actions__contains={'fixed_key_1': 'foo2'})
。 - Manish Shah