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