如何在 Django JSONField 中过滤 JSON 数组
问题:如何在 Django JSONField 中过滤 JSON 数组 我对在 Django 2.0.3 中过滤(postgres)JSONField 感到疯狂。 json 存储为数组。例如。 tasks = [{"task":"test","level":"10"},{"task":"test 123","level":"20"}] 我试过的: myModel.objects.filter("t
·
问题:如何在 Django JSONField 中过滤 JSON 数组
我对在 Django 2.0.3 中过滤(postgres)JSONField 感到疯狂。 json 存储为数组。例如。
tasks = [{"task":"test","level":"10"},{"task":"test 123","level":"20"}]
我试过的:
myModel.objects.filter("tasks__task__contains"="test")
myModel.objects.filter("tasks_task__0__contains"="test")
myModel.objects.filter("tasks__0__task__contains"="test")
myModel.objects.filter("tasks_task__0_x__contains"="test")
myModel.objects.filter("tasks__0_x__task__contains"="test")
出了什么问题?我想做的是一个icontains - 但正如我已经读过的那样,现在Django中的jsonfields不支持icontains......
解答
正确答案应该是:
myModel.objects.filter(tasks__contains=[{"task":"test"}])
如果需要,您可能希望添加更多过滤器以缩小和加速查询,例如
myModel.objects.filter(Q(tasks_level=10, tasks__contains=[{"task":"test"}]))
更多推荐
已为社区贡献19912条内容
所有评论(0)