Запросы Django: как сделать, содержит ИЛИ not_contains запросы - PullRequest
6 голосов
/ 25 февраля 2010

Я должен сделать запрос, который будет получать записи, содержащие подстроку "wd2" или вообще не содержащие строку "wd". Есть ли способ сделать это красиво?

Похоже, что-то вроде:

Record.objects.filter( Q(parameter__icontains="wd2") | Q( ## what should be here? ## ) )

1 Ответ

13 голосов
/ 25 февраля 2010

Из документации по объекту django q :

Вы можете составлять операторы произвольной сложности, комбинируя объекты Q с символами & и | операторы и использовать скобки в скобках. Кроме того, объекты Q могут быть отменены с помощью оператора ~, что позволяет комбинировать поиск, который объединяет как обычный запрос, так и отрицательный (НЕ) запрос:

Q(question__startswith='Who') | ~Q(pub_date__year=2005)

Так что я бы порекомендовал

Record.objects.filter( Q(parameter__icontains="wd2") | ~Q(parameter__icontains="wd") )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...