aggregate()
حساب إحصائي على كل النتائج aggregate()
aggregate() تحسب قيمة إحصائية واحدة (مجموع، متوسط، أكبر، أصغر) على كل الاستعلام، وتُرجع قاموسًا بالنتيجة.
تحتاج دوال من django.db.models مثل Sum وAvg وMax وMin وCount. الفرق عن annotate(): aggregate() تُرجع قيمة واحدة لكل الاستعلام، وannotate() تُضيف قيمة لكل سجل على حدة.
الصياغة
from django.db.models import Sum, Avg, Max, Min
Model.objects.aggregate(Sum("field"))📄 مثال
from django.db.models import Avg, Sum
result = Post.objects.aggregate(
total_views=Sum("views"),
avg_views=Avg("views"),
)
print(result) # {'total_views': 1520, 'avg_views': 76.0}أهم المعاملات
| المعامل | الوظيفة |
|---|---|
| Sum(field) | مجموع قيم الحقل |
| Avg(field) | متوسط قيم الحقل |
| Max(field) / Min(field) | أكبر/أصغر قيمة |
💡 نصائح عملية
- سمِّ النتائج بأسماء واضحة (total_views=Sum(...)) بدل الاعتماد على الاسم الافتراضي المولَّد تلقائيًا
⚠️ أخطاء شائعة
- الخلط بينها وبين annotate() — aggregate تُرجع رقمًا واحدًا لكل الجدول، annotate تُضيف عمودًا محسوبًا لكل صف
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.