迭代列表并在复杂查询Django ORM中使用值

时间:2013-03-25 13:01:58

标签: django django-models

我有以下设计的请求: - example.com/?param1=blah&param1=blah1....param1=blahn。请注意,我想让param1具有多个参数。现在要捕获参数param1的值,我执行以下操作

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

我得到一个包含param1值的列表。我想使用复杂的查询

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]

简而言之,我想动态地遍历列表的值,并且当前在那里丢失。

1 个答案:

答案 0 :(得分:1)

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

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