Поиск по полям и exclude()
Выполняйте запросы с contains, gte, in и другими условиями
«Поиск по полям и exclude()» — бесплатный урок Django Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Django Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Django Academy содержит 4 уроков всего.
Не только равенство
Обычные фильтры проверяют равенство, но в настоящих запросах нужны диапазоны и поиск по тексту. Поиск по полям открывает эти дополнительные возможности.
Двойное подчёркивание
Поиск состоит из имени поля, двойного подчёркивания, а затем оператора. Благодаря этому небольшому синтаксису Django понимает более сложные условия.
Book.objects.filter(year__gte=2020)Больше и меньше
Используйте gt, gte, lt и lte для числовых диапазонов и диапазонов дат. Они напрямую соответствуют операторам сравнения SQL.
Book.objects.filter(price__lt=20)Поиск внутри текста
Поиск contains находит строки, в которых поле содержит указанную подстроку в любом месте. Это удобно для простого поиска.
Book.objects.filter(title__contains="Python")Игнорировать регистр
Добавьте i для поиска текста без учёта регистра, например icontains или iexact, чтобы заглавные буквы не мешали совпадению.
Book.objects.filter(title__icontains="python")Начало и конец строки
Проверяйте начало и конец строки с помощью startswith и endswith. У обоих есть варианты без учёта регистра.
Book.objects.filter(title__startswith="The")Сопоставить набор значений
Поиск in оставляет строки, значение которых встречается в переданном списке. Это аккуратнее, чем объединять множество проверок с помощью OR.
Book.objects.filter(year__in=[2022, 2023, 2024])Проверить пустые значения
Используйте isnull, чтобы найти строки, в которых столбец имеет значение NULL, или установите False, чтобы найти строки со значением.
Book.objects.filter(summary__isnull=True)Инвертировать логику
Иногда нужно получить всё, кроме совпадений. exclude() возвращает строки, которые НЕ соответствуют условию.
Book.objects.exclude(published=True)Поиск работает и в exclude
Любой поиск по полю, работающий в filter, работает и в exclude(). Единственное отличие — результат инвертируется.
Book.objects.exclude(year__gte=2020)Объединить filter и exclude
Объединяйте оба метода в цепочку, чтобы оставить одну группу и исключить другую. Каждый вызов дополнительно сужает тот же ленивый QuerySet.
Book.objects.filter(published=True).exclude(price__gt=50)Быстрая проверка
Вам нужны книги, в названии которых есть «django», независимо от регистра. Какой поиск подойдёт?
Повторение
Вы стали опытнее! Для диапазонов и текста поиск по полям использует двойное подчёркивание, а exclude() инвертирует любое условие. 🔍
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Поиск по полям и exclude()» бесплатный?
Да — полный текст урока «Поиск по полям и exclude()» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Django Academy, подпишись на CoddyKit PRO. Курс Django Academy содержит 4 уроков всего.
Чему я научусь в уроке «Поиск по полям и exclude()»?
Выполняйте запросы с contains, gte, in и другими условиями Ты практикуешь Django Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Django Academy?
Предыдущий опыт не требуется. Django Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Поиск по полям и exclude()»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Django Academy?
Да. Каждый урок Django Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- all(), get() и filter()
- Поиск по полям и exclude()
- order_by, срезы и ленивая обработка
- values, values_list и count