2015-12-08 21 views
0

對於Django中的Q object,我希望能夠解析AND,OR查詢。這裏要被解析的查詢的示例:python將參數傳遞給函數,用字符分隔

from django.db.models import Q 

Poll.objects.filter(
    Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)) 
) 

此查詢是相同的:

a = Q(pub_date=date(2005, 5, 2)) 
b = Q(pub_date=date(2005, 5, 6)) 

Poll.objects.filter(
    a | b 
) 

是否有可能解析像如下所示的查詢?它顯然會失敗,因爲join返回與字符|連接的字符串。但是,這是Django ORM語法需要的,我們希望動態地能夠解析這些查詢,而不用硬編碼Q參數。

a = Q(pub_date=date(2005, 5, 2)) 
b = Q(pub_date=date(2005, 5, 6)) 

Poll.objects.filter(
    " | ".join([a,b]) 
) 
+0

你到底想幹什麼?使用'|'運算符連接Q對象?或者解析一個字符串? – Mikel

+0

@Mikel我想連接Q對象。 –

回答

3

您應該能夠通過重複或運營商來編寫編程:

q = Q() 
for some_date in collection_of_dates: 
    q |= Q(pub_date=some_date) 
Poll.objects.filter(q) 
相關問題