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

Not*_*mon 31 python sql django

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

例如:

>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A")
Run Code Online (Sandbox Code Playgroud)

将自动转换为:

SELECT ... 
FROM publisher
WHERE name LIKE '%press%'
AND country LIKE '%U.S.A.%'
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*hen 63

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

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