in_bulk()
جلب عدّة سجلات كقاموس pk → كائن in_bulk()
in_bulk() تجلب عدّة سجلات دفعة واحدة حسب مفاتيحها الأساسية، وتُرجعها كقاموس Python يربط كل pk بكائنه — بحث فوري بلا حلقة استعلامات.
بديل أكفأ من استدعاء get() بحلقة لكل معرّف على حدة (مشكلة N+1 من نوع مختلف). استعلام واحد فقط يجلب كل الكائنات المطلوبة معًا.
الصياغة
Model.objects.in_bulk([id1, id2, id3])
📄 مثال
posts_by_id = Post.objects.in_bulk([3, 7, 12])
# {3: <Post: ...>, 7: <Post: ...>, 12: <Post: ...>}
for comment_post_id in [3, 7, 12]:
post = posts_by_id.get(comment_post_id)أهم المعاملات
| المعامل | الوظيفة |
|---|---|
| id_list | قائمة المفاتيح الأساسية (أو أي حقل فريد آخر عبر field_name=) |
💡 نصائح عملية
- مثالية عند الحاجة لمطابقة قائمة معرّفات جاهزة (مثلًا من طلب API) بكائناتها دفعة واحدة
⚠️ أخطاء شائعة
- استخدام get() بحلقة for على قائمة معرّفات بدل in_bulk() — استعلام منفصل لكل معرّف بدل استعلام واحد فقط
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.