如何添加括号以使构建动态django复杂过滤器并使之正常运行?

问题描述 投票:0回答:1

我想构建复杂的过滤器:

queryset.filter(
  (Q(k__contains=“1”) & Q(k__contains=“2”) & (~Q(k__contains=“3”))) | 
  (Q(k1__contains=“2”) & (~Q(k4__contains=“3”)))
)

结构是固定的,但查询情况是动态的(来自给定的输入),例如输入可以是

(k=1&k=2&~k=3) | (k1=1&~k4=3)

(k=1&~k=3) | (k1=1&~k4=3) | (k=4&~k=3)

如何添加括号以构建此查询以使其按预期运行?

django django-q
1个回答
0
投票

最后我无法使用django Q进行这项工作。

错误使用extra构建类似代码的代码>>

queryset.extra(where = ["(k1 like '%1%' and k2 like '%2%' and (k3 not like '%3%')) or (k1 like '%4%' and (k3 not like '%3%'))"] ) 而且有效。😂

© www.soinside.com 2019 - 2024. All rights reserved.