我有一个包含过滤查询的列表。我想在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)
我该怎么做。
答案 0 :(得分:0)
我可以看到,您的stream
,state
和duration
个查询是Q
个对象。所以你应该能够像这样混合它们:
clg_list = College.objects.filter(reduce(lambda x, y: x & y, query_list))