2012-08-29 87 views
1

我想要做以下的事情:串联过滤器在Django查询

可以说我有:

query_terms = ["A", "B"] 

,什么是需要的是下面的查询:

House.objects.filter(
    Q(name__icontains="A") | Q(building__name__icontains="A", 
    Q(name__icontains="B") | Q(building__name__icontains="B" 
) 

我不不知道如何将“OR”语句与具有动态query_terms列表的“AND”一起加入

+0

你想达到什么目的? – karthikr

回答

5
full_query = None 
for query in query_terms: 
    q = Q(name__icontains=query) | Q(building__name__icontains=query) 
    if full_query is None: 
     full_query = q 
    else: 
     full_query = full_query & q 

我可能不会优化这完全正确的,但沿着这些线应该工作。

+0

非常棒,只要我可以,我会给剔!非常感谢 – fceruti