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

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