exact/iexact
Поиск exact используется для получения записей с указанным значением. Поиск exact чувствителен к регистру. Для поиска без учета регистра используйте iexact поиск.
Employee.objects.filter(first_name__exact='Jane')
Мы также можем осуществлять поиск по связанным таблицам:
Employee.objects.filter(first_name__exact='Jane', department_id__name__exact='IT')
contains/icontains
Позволяет contains вам проверить, содержит ли строка подстроку. Это эквивалентно следующему LIKE оператору:
LIKE '%substring%'
Например, следующий код находит сотрудников, чье имя содержит подстроку Bi:
Employee.objects.filter(first_name__contains='Bi')
Запрос возвращает сотрудника с именем Bill.
Это icontains нечувствительная к регистру версия файла contains. Таким образом, вы можете использовать, icontains чтобы проверить, содержит ли строка подстроку без учета регистра:
Employee.objects.filter(first_name__icontains='j')
in()
Оператор SQL IN возвращает значение True, если значение находится в наборе значений:
field_name IN (v1, v2, ...)
Например, вы можете использовать IN оператор для запроса строк из hr_employee таблицы, которая department_id находится в списке, подобном этому:
SELECT *
FROM hr_employee
WHERE department_id IN (1,2,3)
В Django вы используете in оператор:
Employee.objects.filter(department_id__in=(1,2))
Обычно вы используете подзапрос с in оператором, а не список литеральных значений.
gt, gte, lt, lte
В Django для выполнения сравнений в запросах к базе данных используются следующие фильтры набора запросов:
gt(больше чем): Этот фильтр выбирает объекты, в которых указанное поле больше заданного значения. Например:Employee.objects.filter(age__gt=30)Этот запрос извлечет всех сотрудников, возраст которых (поле
age) больше 30.lt(меньше чем): этот фильтр выбирает объекты, в которых указанное поле меньше заданного значения. Например:Employee.objects.filter(age__lt=30)Этот запрос извлечет всех сотрудников, возраст которых (поле
age) меньше 30.gte(больше или равно): этот фильтр выбирает объекты, в которых указанное поле больше или равно заданному значению. Например:Employee.objects.filter(age__gte=30)Этот запрос извлечет всех сотрудников, возраст которых (поле
age) больше или равно 30.lte(меньше или равно): Этот фильтр выбирает объекты, в которых указанное поле меньше или равно заданному значению. Например:Employee.objects.filter(age__lte=30)Этот запрос извлечет всех сотрудников, возраст которых (поле
age) меньше или равно 30.