Sobes.tech
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ə annotateaggregate funksiyaları toplu məlumatlarla işləmək üçün istifadə olunur, lakin onların məqsədləri fərqlidir:

  • annotate hə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.

  • aggregate bü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'])