Django:Django过滤列表中每个查询的查询集

时间:2015-07-17 18:49:49

标签: django

我有一个包含过滤查询的列表。我想在django过滤器查询集上运行该查询。

这是我的代码

    query_list = []
    if len(stream_list) != 0:
        stream_query = reduce(lambda x, y: x | y, [Q(course__stream__contains=word) for word in stream_list])
        query_list.append(stream_query)

    if len(state_list) != 0:
        state_query = reduce(lambda x, y: x | y, [Q(college_name__contains=word) for word in state_list])
        query_list.append(state_query)

    if len(duration_list)!= 0:
        duration_query = reduce(lambda x, y: x | y, [Q(course__program_details__contains=word) for word in duration_list])
        query_list.append(duration_query)

现在我想在django过滤器queryset上的query_list中运行查询

像那样

clg_list = College.objects.filter(stream_query, state_query, duration_query)

我该怎么做。

1 个答案:

答案 0 :(得分:0)

我可以看到,您的streamstateduration个查询是Q个对象。所以你应该能够像这样混合它们:

clg_list = College.objects.filter(reduce(lambda x, y: x & y, query_list))