defer()
تأجيل جلب حقول ثقيلة defer()
defer() عكس only() تمامًا — تستثني الحقول المذكورة من الاستعلام الأول، وتجلبها فقط عند الوصول الفعلي لها.
مفيدة لتأجيل حقل نصي ثقيل (مثل محتوى منشور كامل) عند عرض قائمة لا تحتاجه، دون كتابة استعلام values() منفصل يفقد كائن النموذج الكامل.
الصياغة
Model.objects.defer("field1", "field2")📄 مثال
# استبعاد content الثقيل من استعلام القائمة
posts = Post.objects.defer("content")
for post in posts:
print(post.title) # بلا استعلام إضافيأهم المعاملات
| المعامل | الوظيفة |
|---|---|
| field1, field2... | أسماء الحقول المُستبعدة من الاستعلام الأول |
💡 نصائح عملية
- استخدم only() إن كانت الحقول المطلوبة قليلة، وdefer() إن كانت الحقول المُستبعدة قليلة — أوضح للقارئ
⚠️ أخطاء شائعة
- استخدام defer()/only() معًا بسلسلة واحدة بطريقة متضاربة — النتيجة الأخيرة بالسلسلة هي التي تُطبَّق فعليًا
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.