0Pricing
Django Academy · Leçon

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_books

Group 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

  1. aggregate ou annotate
  2. Expressions F pour les mises à jour atomiques
  3. Objets Q pour les filtres complexes
  4. Agrégation conditionnelle avec Case/When
← Retour à Django Academy