🐍 مرجع استعلامات Django ORM بالعربي
كل دالة QuerySet بالعربي: ماذا تفعل، صياغتها، مثال يوضّحها، وأشهر الأخطاء — Python لغة مُترجَمة فلا يوجد تشغيل حي في المتصفح. حاليًا 12 دالة — والقائمة تكبر.
استعلامات ORM
filter()
تصفية النتائج بشرط
filter() تُرجع QuerySet جديدًا يحتوي فقط السجلات المطابقة للشرط الممرَّر.
exclude()
استبعاد نتائج بشرط
exclude() عكس filter() تمامًا — تُرجع كل السجلات التي لا تحقّق الشرط الممرَّر.
get()
جلب سجل واحد بالضبط
get() تُرجع كائنًا واحدًا مطابقًا للشرط — ترمي خطأ إذا لم يوجد أي تطابق أو وُجد أكثر من تطابق واحد.
order_by()
ترتيب النتائج
order_by() ترتّب نتائج الاستعلام حسب حقل أو أكثر — تصاعديًا افتراضيًا، أو تنازليًا بوضع علامة سالبة قبل اسم الحقل.
values() / values_list()
استخراج حقول محدّدة فقط
values() تُرجع النتائج كقواميس Python بدل كائنات نموذج كاملة، وvalues_list() تُرجعها كصفوف (tuples) — أخف وأسرع عند الحاجة لحقول محدّدة فقط.
count()
عدّ النتائج
count() تُرجع عدد السجلات المطابقة كرقم صحيح — أكفأ بكثير من len(queryset) لأنها تُنفَّذ كاستعلام COUNT بقاعدة البيانات مباشرة.
exists()
فحص وجود سجل بلا جلبه
exists() تُرجع True/False بسرعة — هل يوجد سجل واحد على الأقل مطابق، بدون تحميل أي بيانات فعلية.
get_or_create()
جلب سجل أو إنشاؤه إن لم يوجد
get_or_create() تبحث عن سجل مطابق، وتُنشئه تلقائيًا إذا لم يوجد — بعملية واحدة آمنة بدل شرط يدوي.
select_related()
تحسين استعلامات العلاقات (ForeignKey)
select_related() تجلب الكائنات المرتبطة عبر ForeignKey/OneToOne بنفس استعلام SQL واحد (JOIN) بدل استعلام منفصل لكل وصول.
prefetch_related()
تحسين استعلامات العلاقات المتعدّدة
prefetch_related() تحل نفس مشكلة N+1 لكن للعلاقات العكسية أو ManyToMany، حيث JOIN واحد غير كافٍ.
aggregate()
حساب إحصائي على كل النتائج
aggregate() تحسب قيمة إحصائية واحدة (مجموع، متوسط، أكبر، أصغر) على كل الاستعلام، وتُرجع قاموسًا بالنتيجة.
annotate()
إضافة حقل محسوب لكل سجل
annotate() تضيف قيمة محسوبة (غالبًا من عدّ أو تجميع علاقة) لكل سجل بنتيجة الاستعلام على حدة.
🎓 تريد التعلم بالترتيب بدل المرجع السريع؟ ابدأ من مسار DJANGO الكامل بالعربي.