Mohssen A Mohssen نشر 22 فبراير 2022 أرسل تقرير نشر 22 فبراير 2022 أريد تحديد بعض العمليات (تشغيل دالة معينة) لنموذج model عند إنشائه فقط. أي شيء مثل before_create مثلًا. هل هذا ممكن؟ حاولت البحث عن حل ولكن وجدت أن توثيق جانغو Django يعرض أمثلة فقط لعمل overriding للتوابع save و delete فقط كيف أقوم بتشغيل بعض الأكواد عند إنشاء كائن جديد من النموذج instance of model في جانغو Django؟ 1 اقتباس
1 Bassam Ahmed3 نشر 23 فبراير 2022 أرسل تقرير نشر 23 فبراير 2022 يمكنك استخدام Django Signals و هي يوجد بها العديد من الخصائص التي تسمح بإستقبال الإشارات على سبيل المثال : عند إستقبال إشارة إنشاء مستخدم جديد في قاعدة البيانات قم بإنشاء صفحة شخصية خاصة بذلك المستخدم و ذلك يتم عن طريق استخدام أوامر الإستدعاء from django.db.models.signals import post_save from django.dispatch import receiver ثم نقوم بكتابة class الصفحة الشخصية للمستخدم تتضمن بعض البيانات الاختياريه مثل الاسم , العنوان , رقم الهاتف و غيرها ثم نضع django signals بعد ال class كالآتي بالعلم أن ال class الذي وضعنا بعده نموذج الإشارات هو Profile : @receiver(post_save , sender = User) def create_user_profile(sender , instance , created , **kwargs ): if created : Profile.objects.create(user = instance) فهناك العديد من الأوامر المستخدمه في نظام الإشارات في django لتتناسب مع كل فكرة يتم تطبيقها على سبيل المثال : pre_save : تستخدم في حال الرغبة في تنفيذ شيء قبل حفظ النموذج post_save : تستخدم في حال الرغبة في تنفيذ شيء بعد حفظ النموذج pre_delete : تستخدم في حال الرغبة في تنفيذ شيء قبل مسحة ( قبل حذف المستخدم قم بحذف المنشورات المتعلقه به ) m2m_changed : تستخدم في تتبع التغييرات في العلاقات المتعدده مثل ManyToManyField و يوجد بها العديد من الأدوات ( pre_add , post_add , pre_remove , post_remove , pre_clear , post_clear ) و غيرها من الأدوات لتسهيل تنفيذ الإشارات في حال حدوث أي تغيير في العلاقة 1 اقتباس
1 مسعود زاهي نشر 22 فبراير 2022 أرسل تقرير نشر 22 فبراير 2022 يُمكنك إستخدام Django signals والتي هي عبارة عن إشارات تسمح بإرسال تنبيهات عندَ حُدوث إجراءات معينة من بين تلك الإشارات نجد: post_save: تُستدعى هذه الإشارة بعد حفظ الكائن في قاعدة البيانات أي بعد حدوث الدالة save. pre_save: تُستدعى هذه الإشارة قبل حفظ الكائن في قاعدة البيانات اي قبل حدوث الدالة save. لتشغيل الأكواد عند إنشاء كائن جديد من النموذج Model نقوم بإنشاء signal من نوع post_save: from django.db.models.signals import post_save from django.dispatch import receiver @receiver(post_save, sender=Model) def run_code(sender, instance, created, **kwargs): # نتحقق أولا من أن الكائن جديد if created: # هنا نضع الأكواد التي نُريد تشغيلها عندما يتم إنشاء # كائن جديد 1 اقتباس
السؤال
Mohssen A Mohssen
أريد تحديد بعض العمليات (تشغيل دالة معينة) لنموذج model عند إنشائه فقط. أي شيء مثل before_create مثلًا. هل هذا ممكن؟
حاولت البحث عن حل ولكن وجدت أن توثيق جانغو Django يعرض أمثلة فقط لعمل overriding للتوابع save و delete فقط
كيف أقوم بتشغيل بعض الأكواد عند إنشاء كائن جديد من النموذج instance of model في جانغو Django؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.