first()
جلب أول نتيجة أو None first()
first() تُرجع أول سجل بالنتيجة، أو None إن كانت فارغة — بلا استثناء مهما كانت النتيجة.
بعكس get() التي ترمي خطأ إن لم يوجد تطابق، first() ترجع None بهدوء. تفرض ترتيبًا ضمنيًا حسب المفتاح الأساسي إن لم يوجد order_by صريح على الاستعلام، لذا يُفضَّل ترتيب صريح دائمًا قبل استخدامها.
الصياغة
Model.objects.filter(...).order_by("field").first()📄 مثال
latest_post = Post.objects.order_by("-created_at").first()
if latest_post:
print(latest_post.title)
else:
print("لا يوجد منشورات بعد")💡 نصائح عملية
- دائمًا ضع order_by() صريحًا قبل first() — بدونه الترتيب الضمني غير موثوق لكل الحالات
⚠️ أخطاء شائعة
- الاعتماد عليها بدل get() لحقل يُفترض أن يكون فريدًا — first() تُخفي وجود أكثر من تطابق واحد بصمت بدل تنبيهك بخطأ MultipleObjectsReturned
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.