РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
102 of 818 menu

Лукап in

Лукап in применяется в запросах к базе данных для фильтрации объектов, у которых значение поля содержится в переданном списке или подзапросе. Он преобразуется в SQL-оператор IN. Основное преимущество in - возможность проверять множество значений за один запрос вместо множества отдельных сравнений.

Синтаксис

Model.objects.filter(field__in=[value1, value2, ...])

Пример

Давайте выберем статьи с определенными идентификаторами:

from myapp.models import Article articles = Article.objects.filter(id__in=[1, 3, 5]) for article in articles: print(article.title)

Результат выполнения кода:

"First article" "Third article" "Fifth article"

Пример

Давайте отфильтруем статьи по категориям, передав список названий:

from myapp.models import Article categories = ['Tech', 'Science', 'Health'] articles = Article.objects.filter(category__name__in=categories) for article in articles: print(article.title)

Результат выполнения кода:

"AI in Medicine" "Quantum Computing" "Space Exploration"

Пример

Давайте используем подзапрос для динамического формирования списка значений:

from myapp.models import Article, User active_users = User.objects.filter(is_active=True).values_list('id', flat=True) articles = Article.objects.filter(author_id__in=active_users) for article in articles: print(article.title)

Результат выполнения кода:

"Mastering Django" "Advanced ORM" "REST API Design"

Пример

Давайте проверим, как работает in с пустым списком:

from myapp.models import Article empty_list = [] articles = Article.objects.filter(id__in=empty_list) print(articles.count())

Результат выполнения кода:

"0"

При передаче пустого списка запрос вернет пустой QuerySet, что ожидаемо, так как ни одно значение не может принадлежать пустому множеству.

Смотрите также

  • метод exact,
    который выполняет точное сравнение значения поля
  • метод gt,
    который находит значения больше указанного
  • метод range,
    который проверяет попадание значения в диапазон
  • метод contains,
    который выполняет поиск по подстроке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить