aggregate versus annotate
Resuma conjuntos de consultas inteiros ou por linha
aggregate versus annotate é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Two Ways to Summarize
The ORM gives you two summary tools: aggregate collapses a whole queryset into one result, while annotate adds a value to each row.
What aggregate Returns
Calling aggregate ends the query and hands you a plain Python dictionary, not a queryset, so there is nothing left to filter afterward.
from django.db.models import Avg
Book.objects.aggregate(Avg("price"))
# {"price__avg": 24.5}Naming Your Result
Pass a keyword to aggregate to name the output key yourself, which reads far better than the auto-generated price__avg label.
Book.objects.aggregate(avg_price=Avg("price"))
# {"avg_price": 24.5}Common Aggregate Functions
You get the usual SQL toolkit: Count, Sum, Avg, Min, and Max. Each one rolls the whole queryset down to a single number.
from django.db.models import Count, Sum
Book.objects.aggregate(total=Count("id"), revenue=Sum("price"))What annotate Returns
By contrast, annotate returns a queryset where every object carries a new computed attribute, so you can keep filtering and ordering.
Per-Row Counts
Use annotate with a related count to answer per-object questions, like how many books each author has written.
Author.objects.annotate(num_books=Count("book"))
# each author now has .num_booksGroup By Happens for You
When you annotate over a relation, Django adds the GROUP BY clause automatically, grouping by the model you started from.
Filter on an Annotation
Because annotate keeps a queryset, you can filter on the new value, for example to find authors with more than five books.
Author.objects.annotate(n=Count("book")).filter(n__gt=5)Order by an Annotation
You can also order_by a computed value, so ranking your busiest authors is a one-line query.
Author.objects.annotate(n=Count("book")).order_by("-n")Filter Before You Annotate
Order matters: a filter before annotate narrows which rows get counted, while a filter after it tests the computed result.
Pick the Right Tool
Ask one question: do you want a single summary for the whole set, or one value per object? That choice decides aggregate versus annotate.
Quick Check
You want each author's book count, kept as a queryset you can still order. Which call fits?
Recap
Remember the split: aggregate returns one summary dict and ends the query, while annotate adds a value per row and keeps a queryset you can filter and order. 🎯
Perguntas Frequentes
A aula “aggregate versus annotate” é grátis?
Sim — o texto completo de “aggregate versus annotate” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.
O que vou aprender em “aggregate versus annotate”?
Resuma conjuntos de consultas inteiros ou por linha Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Django Academy?
Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “aggregate versus annotate”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Django Academy?
Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- aggregate versus annotate
- Expressões F para atualizações atômicas
- Objetos Q para filtros complexos
- Agregação condicional com Case/When