2010-07-02 41 views
27

似乎Django的對象模型過濾器方法自動使用AND SQL關鍵字。如何使用或使用Django的模型過濾器系統?

例如:

>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A") 

會自動轉化爲類似:

SELECT ... 
FROM publisher 
WHERE name LIKE '%press%' 
AND country LIKE '%U.S.A.%' 

不過,我想知道是否有一種方法,使「與」一「或」?我似乎無法在文檔中找到它(奇怪的是,搜索'或'不是很有用)。

回答

52

您可以使用Q objects做你想做的,通過按位的OR-ing在一起:

from django.db.models import Q 
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A")) 
+0

謝謝!這看起來應該是訣竅。 – Simon 2010-07-02 14:39:06