djano复杂的postgre查询解析

时间:2019-05-29 11:44:36

标签: python sql django django-models

前端中的用户可以像这样在模型的ID上提交任意嵌套的查询字符串

querystring="(driver = 1 AND routes = 3) OR ( driver = 2 AND weather = 1 )"

我想使用djangos复合Q函数在后端查询此字符串,这意味着我需要将 querystring 转换为

criterion = \
(Q(detail__drivers=1) & Q(routes =3) ) | (Q(detail__driver=2) & Q(detail__weather=1) )

以便能够使用

进行过滤
self.queryset.filter(criterion)

但是如何在保持括号结构的同时自动将字符串转换为条件?

1 个答案:

答案 0 :(得分:0)

尝试这个:

self.queryset.filter(Q(detail__drivers=1, routes =3) |(Q(detail__driver=2, detail__weather=1))