Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

2.7 Поисковые поля
5 из 5 шагов пройдено

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 для выполнения сравнений в запросах к базе данных используются следующие фильтры набора запросов:

  1. gt(больше чем): Этот фильтр выбирает объекты, в которых указанное поле больше заданного значения. Например:
    Employee.objects.filter(age__gt=30)

    Этот запрос извлечет всех сотрудников, возраст которых (поле age) больше 30.

     

  2. lt(меньше чем): этот фильтр выбирает объекты, в которых указанное поле меньше заданного значения. Например:
    Employee.objects.filter(age__lt=30)

    Этот запрос извлечет всех сотрудников, возраст которых (поле age) меньше 30.

     

  3. gte(больше или равно): этот фильтр выбирает объекты, в которых указанное поле больше или равно заданному значению. Например:
    Employee.objects.filter(age__gte=30)

    Этот запрос извлечет всех сотрудников, возраст которых (поле age) больше или равно 30.

     

  4. lte(меньше или равно): Этот фильтр выбирает объекты, в которых указанное поле меньше или равно заданному значению. Например:
    Employee.objects.filter(age__lte=30)

    Этот запрос извлечет всех сотрудников, возраст которых (поле age) меньше или равно 30.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.