Junior — Middle
Wat is het belangrijkste verschil tussen de functies annotate en aggregate in Django ORM bij het uitvoeren van queries?
sobes.tech AI
Antwoord van AI
In Django ORM worden de functies annotate en aggregate gebruikt om te werken met geaggregeerde gegevens, maar ze hebben verschillende doelen:
-
annotatevoegt berekende velden toe aan elk object in de QuerySet. Dat wil zeggen, aan elke record wordt een extra veld toegevoegd met het resultaat van een aggregatiefunctie. -
aggregateberekent een geaggregeerde waarde voor de hele QuerySet en retourneert een woordenboek met de resultaten, zonder gekoppeld te zijn aan individuele objecten.
Voorbeeld:
from django.db.models import Count
# annotate: voeg aan elk object het aantal gerelateerde records toe
authors = Author.objects.annotate(book_count=Count('book'))
for author in authors:
print(author.name, author.book_count)
# aggregate: tel het totale aantal boeken van alle auteurs
total_books = Author.objects.aggregate(total=Count('book'))
print(total_books['total'])