Поисковые поля используют простой синтаксис двойного подчёркивания.
<поле поиска>__<поиск>
Employee.objects.filter(first_name__exact='John')
Под капотом Django создает запрос SQL WHERE для построения запросов к базе данных из применяемого поиска. Допускается многократный поиск, а также поисковые поля могут быть выстроены по цепочке:
Employee.objects.filter(first_name__exact='John', created__year__lt=2024)
Тем самым мы получаем сотрудника с именем John, созданного раньше 2024 года.
Полный список поисковых полей Django
- exact/iexact Точное совпадение.
iexact- версия без учета регистра. - contains/icontains Поле содержит текст поиска.
icontainsэто версия без учета регистра. - in В указанной итерации (список, кортеж или QuerySet)
- gt/gte Больше чем / больше чем или равно
- lt/lte Меньше чем/меньше чем или равно
- startswith/istartswith Начинается в строке поиска.
istartswithэто версия без учета регистра. - endswith/iendswith Заканчивается в строке поиска.
iendswithэто версия без учета регистра. - range Тест диапазона. Диапазон включает в себя начальное и конечное значения
- date Передает значение в виде даты. Используется для поиска полей
datetime - year Поиск точного совпадения года
- iso_year Поиск точного совпадения по году ISO 8601
- month Поиск точного совпадения месяца
- day Поиск точного совпадения дня
- week Поиск точного совпадения недели
- week_day Поиск точного совпадения дня недели
- quarter Поиск точного совпадения квартала года.
- time Использует значение времени. Используется для поиска полей
datetime - hour/minute/second Поиск точного совпадения по часам, минутам или секундам.
- isnull Проверяет, есть ли нулевое поле. Возвращает
TrueилиFalse - regex/iregex Совпадение регулярных выражений.
iregex- версия без учета регистра.