Junior — Middle
Care este diferența principală dintre funcțiile annotate și aggregate în Django ORM în timpul executării interogărilor?
sobes.tech AI
Răspuns de la AI
În Django ORM, funcțiile annotate și aggregate sunt utilizate pentru a lucra cu date agregate, dar au scopuri diferite:
-
annotateadaugă câmpuri calculate fiecărui obiect din QuerySet. Adică, fiecărui înregistrări i se adaugă un câmp suplimentar cu rezultatul unei funcții de agregare. -
aggregatecalculează o valoare agregată pentru întregul QuerySet și returnează un dicționar cu rezultatele, fără a fi legat de obiecte individuale.
Exemplu:
from django.db.models import Count
# annotate: adăugăm fiecărui obiect numărul de înregistrări conexe
authors = Author.objects.annotate(book_count=Count('book'))
for author in authors:
print(author.name, author.book_count)
# aggregate: numărăm numărul total de cărți ale tuturor autorilor
total_books = Author.objects.aggregate(total=Count('book'))
print(total_books['total'])