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

Метод in_bulk

Метод in_bulk применяется к QuerySet и позволяет эффективно извлекать записи по списку идентификаторов. В отличие от метода filter, который возвращает список объектов, in_bulk возвращает словарь, что удобно для быстрого доступа к объекту по его первичному ключу. Метод выполняет один SQL-запрос с условием IN, что делает его более производительным, чем последовательное использование метода get для каждого идентификатора.

Метод принимает следующие аргументы:

  • id_list - список или кортеж значений первичных ключей (по умолчанию None). Если передан пустой список, возвращается пустой словарь. Если не передан - возвращаются все объекты в виде словаря.
  • field_name - имя поля, по которому производится поиск (по умолчанию 'pk'). Может быть любым уникальным полем модели.

Синтаксис

Model.objects.in_bulk(id_list=None, field_name='pk')

Пример

Получим статьи по списку идентификаторов:

from myapp.models import Article articles = Article.objects.in_bulk([1, 3, 5]) for pk, article in articles.items(): print(f"{pk}: {article.title}")

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

"1: article_1" "3: article_3" "5: article_5"

Пример

Получим все объекты модели в виде словаря, где ключом будет первичный ключ:

from myapp.models import Category categories = Category.objects.in_bulk() for pk, category in categories.items(): print(f"{pk}: {category.name}")

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

"1: category_1" "2: category_2" "3: category_3"

Пример

Используем поле с уникальным значением, отличным от первичного ключа:

from myapp.models import User users = User.objects.in_bulk(['john_doe', 'jane_doe'], field_name='username') for username, user in users.items(): print(f"{username}: {user.email}")

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

"john_doe: john@example.com" "jane_doe: jane@example.com"

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

  • метод get,
    который получает одну запись из базы данных
  • метод filter,
    который фильтрует записи в QuerySet
  • метод bulk_create,
    который массово создаёт записи в базе данных
  • метод bulk_update,
    который массово обновляет записи в базе данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить