تخطَّ إلى المحتوى

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 الكامل بالعربي.