in_bulk()
Метод берет список значений id и возвращает словарь, с экземплярами объектов которые соответствуют каждому id. Если в список не передать значение, то будут возвращены все объекты:
Employee.objects.in_bulk()
После извлечения, вы можете получить доступ к каждому объекту по его ключевому значению:
Любой непустой список извлечет все записи с указанными id:
Employee.objects.in_bulk([1])
Список c id не обязательно должен быть последовательным:
Асинхронная версия - ain_bulk()
iterator()
QuerySet обычно кеширует свои результаты, когда происходит оценка, и для любых дальнейших операций с этим QuerySet он сначала проверяет кешированные результаты. Но когда вы используете iterator(), он не проверяет кеш и считывает результаты непосредственно из базы данных. Результаты не сохраняются в QuerySet.
Для QuerySet, возвращающего большое количество объектов, которые требуют много памяти для кеширования и к которому вам нужно получить доступ только один раз, вы можете использовать iterator().
Employee.objects.all().iterator()
latest() и earliest()
Возвращают самую последнюю или самую раннюю дату в базе данных для указанного поля (полей):
Employee.objects.latest('created')
Employee.objects.earliest('created')
first()
Возвращает первый объект (строку), соответствующий набору запросов или None, если нет подходящего объекта. Если в наборе запросов порядок не определен, то набор запросов автоматически упорядочивается по первичному ключу.
Employee.objects.first()
last()
Возвращает последний объект (строку), соответствующий набору запросов или None, если нет подходящего объекта. Если в наборе запросов порядок не определен, то набор запросов автоматически упорядочивается по первичному ключу.
Employee.objects.last()
aggregate()
Возвращает словарь агрегированных значений, вычисленных по QuerySet.
Department.objects.aggregate(Count('name'))
Список всех агрегатных функций, доступных в Django, мы рассмотрим в этом курсе, в разделе 2.8 "Агрегатные функции и их группировка".
exists()
Возвращает True, если полученный QuerySet содержит один или несколько объектов, False, если QuerySet пустой. Существует два распространенных варианта использования - проверка на наличие объекта в другом QuerySet'е:
Employee.objects.filter(first_name='Bill').exists()
В случае если ответ не содержит объекты, получим False