4. Как сделать NOT запрос в Django queryset?¶

Если вы используете django.contrib.auth
, у вас будет таблица под названием auth_user
. В ней будут поля username
, first_name
, last_name
и другие.
Допустим, вы хотите получить всех пользователей с id НЕ < 5. Вам нужна операция NOT.
Django предоставляет два варианта.
exclude(<condition>)
filter(~Q(<condition>))
4.1. Запрос в деталях¶
Наш SQL-запрос для приведенного выше условия будет выглядеть примерно так:
SELECT id, username, first_name, last_name, email FROM auth_user WHERE NOT id < 5;

Метод 1 с использованием исключения
Метод 2 с использованием метода Q():
>>> from django.db.models import Q
>>> queryset = User.objects.filter(~Q(id__lt=5))
>>> queryst
<QuerySet [<User: Ritesh>, <User: Billy>, <User: Radha>, <User: sohan>, <User: Raghu>, <User: rishab>]>