如何在django中使用MultipleChoiceField或查询?

时间:2014-07-11 19:30:59

标签: python django

在django中使用MultopleChoiceField时,如何创建所选项目的查询?使用:

return_queryset = model_name.objects.filter(Q(Column_name=request.POST.getlist('Column_name')[0])|Q(Column_name=request.POST.getlist('Column_name')[1])

它将返回or语句,但前提是您选择了正确数量的项目。是否有一个快捷方式可以选择任意数量的项目?

您可以将查询集堆叠在一起,但是有没有办法堆叠或查询集?感谢。

Or query

Queryset

Filter

1 个答案:

答案 0 :(得分:1)

回答有关堆叠or子句的具体问题 - 在一般情况下,您可以使用内置|模块中operator的功能标签来组合Q对象。

import operator
return_queryset = model_name.objects(filter(reduce(operator.or_,
    (Q(Column_name=name) for name in request.POST.getlist('Column_name')))))

但对于这个特定情况,我会使用in

return_queryset = model_name.objects.filter(Column_name__in=request.POST.getlist('Column_name'))