Как использовать ИЛИ, используя систему фильтрации моделей Django? - PullRequest
30 голосов
/ 02 июля 2010

Кажется, что метод фильтра объектной модели 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.%'

Однако мне было интересно, есть ли способ сделать это 'И'«ИЛИ»?Я не могу найти его в документации (как ни странно, поиск «или» не очень полезен).

1 Ответ

61 голосов
/ 02 июля 2010

Вы можете использовать Q объектов , чтобы делать то, что вы хотите, поразрядно или объединяя их вместе:

from django.db.models import Q
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...