Junior — Middle
Django ORM-də sorğular icra edilərkən annotate və aggregate funksiyaları arasındakı əsas fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Django ORM-də annotate və aggregate funksiyaları toplu məlumatlarla işləmək üçün istifadə olunur, lakin onların məqsədləri fərqlidir:
-
annotatehər QuerySet obyektinə hesablanmış sahələr əlavə edir. Yəni, hər qeyd üçün toplama funksiyasının nəticəsi ilə əlavə sahə əlavə olunur. -
aggregatebütün QuerySet üçün toplu dəyər hesablayır və nəticələrlə sözlük qaytarır, fərdi obyektlərlə əlaqəli deyil.
Nümunə:
from django.db.models import Count
# annotate: hər obyektə əlaqəli qeyd sayı əlavə edirik
authors = Author.objects.annotate(book_count=Count('book'))
for author in authors:
print(author.name, author.book_count)
# aggregate: bütün müəlliflərin ümumi kitab sayını hesablayırıq
total_books = Author.objects.aggregate(total=Count('book'))
print(total_books['total'])