Встречается на собеседованиях • сегодня

В чем разница между annotate и aggregate в Django

Оба метода используются для выполнения агрегаций, но работают по-разному:

annotate():

  • Добавляет вычисляемое поле к каждому объекту QuerySet
  • Результат доступен для каждого объекта отдельно
  • Используется, когда нужно получить агрегированные данные для каждой записи

aggregate():

  • Возвращает словарь с агрегированными значениями по всему QuerySet
  • Вычисляет общие итоги (суммы, средние и т.д.)
  • Возвращает только один результат для всего набора данных

Пример:

python
from django.db.models import Count, Avg

# annotate - кол-во заказов для каждого клиента
clients = Client.objects.annotate(order_count=Count('orders'))

# aggregate - среднее кол-во заказов по всем клиентам
stats = Client.objects.aggregate(avg_orders=Avg('orders'))

Ключевое отличие: annotate модифицирует QuerySet, добавляя поля, а aggregate возвращает финальный результат агрегации.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы