Django RawSql查询在嵌套的json上做过滤

时间:2017-06-21 22:07:56

标签: python sql django django-queryset

我的模特看起来像这样

class Foo():
  payload = JSONField()

Payload看起来像这样

[{
  "id": 12,
   "names": [{"location": "New York"}, ]{"location": "Philly"}]
 },
 {
  "id": 15,
   "names": [{"location": "Paris"}, ]{"location": "Cannes"}]
 }]

queryset = Foo.objects.all()
queryset = queryset.filter(payload__names__contains=[{"name": "Paris"}]) #this works!!
queryset = queryset.filter(payload__names__contains=[{"name": "Par"}]) #does not work

第二个语句不起作用 - 它返回0个结果。在第一种情况下,它起作用,因为提供了全文。在rawSql中执行此操作的最佳方法是什么? [我假设在Django中不可能]

我彻底解决了这个问题但无法在嵌套数组json字段上找到用于执行like的内容。

1 个答案:

答案 0 :(得分:0)

这里无法完成 - https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/fields/

我的解决方案是实现类似这样的RawSql - jsonb query with nested objects in an array