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 os.walk()
Если кратко, то:
folders_to_exclude = ['folder1', 'folder 2', 'new_folder']
for root, dirs, files in os.walk(yo…
Подробнее
Как выгрузить\восстановить базу данных PostgreSQL из Docker-контейнера
Выгрузить SQL дамп базы
docker exec -i pg_container_name /bin/bash -c "PGPASSWORD=pg_password pg_dump --username p…
Подробнее
Резервное копирование и установка расширений (extensions) в Visual Studio Code
Несколько полезных команд для работы с расширениями в Microsoft Visual Studio Code.
Сохранить все установленные расш…
Подробнее
Выводим Inline формы в админке Django в зависимости от группы в которой находится пользователь
Начиная с версии Django 3.* доступен метод get_inlines.
Допустим мы хотим показать Inline форму если пользователь на…
Подробнее
Ошибка при остановке Docker контейнера вида: ERROR: for *** cannot stop container: *** permission denied
Ошибка возникает при запуске и остановке контейнера, а также при попытке его повторной сборки. Имеет примерно такой вид…
Подробнее
Django\Nginx 403 Forbidden Error при доступе к media
Скорее всего ошибка возникает из-за неверных прав доступа к папке media и её поддиректориям. Исправляется командой:
…
Подробнее