Aggregation - обрабатывает все результаты запроса (queryset).
Предположим мы хотим получить среднюю цену всех товаров в магазине:
Product.objects.aggregate(avg_price=Avg('price'))
# {'avg_price': 1596.75}
Annotation - обрабатывает значение каждого значения (item) в запросе (queryset) отдельно.
Посчитаем количество тегов в каждой публикации блога:
q = Blog.objects.annotate(count_tags=Count('tag'))
q[0].count_tags
# 3
q[1].count_tags
# 7
Автор видео Pretty Printed.
Другие публикации из блога
Склонение слов во множественном числе с помощью Python
Задача довольно проста: у нас есть число и слово в трех склонениях, надо выбрать верно склонение в зависимости от числа…
Подробнее
Inline цикл for с условиями в Python
my_list = [1, 2, 3, 4, 5]
print([item for item in my_list if item > 2])
# [3, 4, 5]
Подробнее
Как получить домен и атрибуты GET запроса в JavaScript?
See the Pen
Untitled by Denis (@m5dev)
on CodePen.
Подробнее
Как выбрать текущего пользователя в поле ForeignKey в админке Django по-умолчанию
Предположим у вас есть модель которая ассоциируется с каким-то пользователем через поле ForeignKey. По-умолчанию в спис…
Подробнее
Как выгрузить\восстановить базу данных PostgreSQL из Docker-контейнера
Выгрузить SQL дамп базы
docker exec -i pg_container_name /bin/bash -c "PGPASSWORD=pg_password pg_dump --username p…
Подробнее
Как получить данные из url без модуля requests в Python
from urllib.request import urlopen, Request
url = 'https://jsonplaceholder.typicode.com/posts'
# url = 'https://g…
Подробнее