如何使用或使用Django的模型过滤系统?

时间:2010-07-02 14:00:18

标签: python sql django

似乎Django的对象模型过滤器方法自动使用AND SQL关键字。

例如:

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

会自动翻译成:

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

然而,我想知道是否有办法让'AND'成为'OR'?我似乎无法在文档中找到它(奇怪的是,搜索'或'并不是很有用)。

1 个答案:

答案 0 :(得分:60)

你可以使用Q objects做你想要的,通过按位对它们进行OR运算:

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