2010-07-02 33 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