2012-08-29 81 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