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

get_or_create()

جلب سجل أو إنشاؤه إن لم يوجد get_or_create()

get_or_create() تبحث عن سجل مطابق، وتُنشئه تلقائيًا إذا لم يوجد — بعملية واحدة آمنة بدل شرط يدوي.

تُرجع دائمًا (object, created) — كائن ونتيجة منطقية توضّح هل أُنشئ الآن أم كان موجودًا أصلًا. defaults تحدّد القيم المستخدمة فقط عند الإنشاء الفعلي.

الصياغة

obj, created = Model.objects.get_or_create(
    lookup_field=value,
    defaults={"field": value},
)

📄 مثال

category, created = Category.objects.get_or_create(
    name="جافاسكريبت",
    defaults={"slug": "javascript"},
)
if created:
    print("فئة جديدة أُنشئت")
else:
    print("الفئة موجودة أصلًا")

أهم المعاملات

المعاملالوظيفة
lookup_fieldالحقل/الحقول المستخدمة للبحث عن السجل الموجود
defaultsقيم إضافية تُستخدم فقط عند الإنشاء الفعلي (لا عند العثور على سجل موجود)

💡 نصائح عملية

  • مثالية لبيانات مرجعية (فئات، وسوم) قد تتكرر محاولات إنشائها من أكثر من مكان بالكود

⚠️ أخطاء شائعة

  • نسيان أن defaults تُطبَّق فقط عند الإنشاء — تعديلها لاحقًا لا يُحدِّث سجلًا موجودًا مسبقًا

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DJANGO الكامل بالعربي.