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

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

2.6 Методы, которые не возвращают QuerySet
3 из 3 шагов пройдено

 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


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