2013-03-25 89 views
0

我在以下设计中有请求: - example.com/?param1=blah & param1 = blah1 .... param1 = blahn。请注意,我想要有几个参数的param1。我们捕捉参数参数1的值,我下面遍历列表并在复杂查询中使用值Django ORM

searchQery = request.GET.getlist('param1') 

从哪里获得与参数1值的列表。我想使用一个复杂的查询

for item searchQuery: 
     val = MyModel.objects.filter(Q(item__startswith=searchQuery[0])| Q(item__startswith=searchQuery[1])| Q(item__startswith=searchQuery[2])) all the way to searchQuery[n] 

总之我想遍历列表的值,动态和我目前在那里丢失。

+0

为什么你不使用“__in”。这里是一个简单的例子。 val = MyModel.objects.filter(item__in = list) – 2013-03-25 13:40:12

回答

1
from operator import or_ 
val = MyModel.objects.filter(reduce(or_,(Q(item__startswith=x) for x in searchQuery))) 

使用reduce来组合生成的Q表达式的序列。