aggregate ou annotate
Résumez des jeux de requêtes entiers ou chaque ligne.
aggregate ou annotate est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Django Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Django Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
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. 🎯
Questions Fréquemment Posées
La leçon « aggregate ou annotate » est-elle gratuite ?
Oui — le texte complet de « aggregate ou annotate » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Django Academy, passe à CoddyKit PRO. Le cours Django Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « aggregate ou annotate » ?
Résumez des jeux de requêtes entiers ou chaque ligne. Tu pratiques Django Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Django Academy ?
Aucune expérience préalable n'est requise. Django Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « aggregate ou annotate » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Django Academy ?
Oui. Chaque leçon Django Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- aggregate ou annotate
- Expressions F pour les mises à jour atomiques
- Objets Q pour les filtres complexes
- Agrégation conditionnelle avec Case/When