Mohssen A Mohssen نشر 7 فبراير 2022 أرسل تقرير نشر 7 فبراير 2022 ما الذي يجعلني أستخدم الكود التالي بدلًا من إنشاء نموذج form بإستخدام الصنف ModelForm وإستدعاء التابع is_valid للتحقق من النموذج form و model معًا: save(commit=False) متى يجب أن أستعمل save(commit=False) من الأساس؟ هل هناك مواقف حيث قد يكون هذا الكود مفيدًا؟ 1 اقتباس
1 مسعود زاهي نشر 7 فبراير 2022 أرسل تقرير نشر 7 فبراير 2022 (معدل) عند إستعمال save مع commit=False الكائن المُعاد من الدالة لن يُحفظ في قاعدة البيانات عكس الأمر عند إستخدام commit=True الكائن سوف يٌحفظ وبعدها يُعاد. يكون هذا الفعل مٌفيداً عندما نٌريد إجراء مُعالجة إضافية للكائن قبل حفظه في قاعدة البيانات. كمثال تطبيقي، نفرض أننا نملك نموذجاً حيثُ يكون عنوان البريد الالكتروني واسم المستخدم مُتماثلين دائما في هذه الحالة عند رسم النموذج نقوم بوضع حقل واحد خاص بالبريد الإلكتروني مثلاً وعند حفظ النموذج نُعبئ حقل اسم المستخدم بنفس القيمة. class UserForm(forms.ModelForm): ... def save(self): # نقوم بتمرير #commit=False # للنموذج # الكائن المُعاد # لا يكون محفوظا في قاعدة البيانات في هذه اللحظة user = super(UserForm, self).save(commit=False) # "هنا نجعل قيمة "اسم المستخدم" هي نفس قيمة "البريد الالكتروني user.username = user.email # هنا يتم الحفظ user.save() return user عكس ما إذا استخدمنا commit=True فإن الكائن سوف يٌحفظ في قاعدة البيانات قبل أن نقوم بوضع قيمة "اسم المستخدم". تم التعديل في 7 فبراير 2022 بواسطة مسعود زاهي 1 اقتباس
السؤال
Mohssen A Mohssen
ما الذي يجعلني أستخدم الكود التالي بدلًا من إنشاء نموذج form بإستخدام الصنف ModelForm وإستدعاء التابع is_valid للتحقق من النموذج form و model معًا:
متى يجب أن أستعمل save(commit=False) من الأساس؟ هل هناك مواقف حيث قد يكون هذا الكود مفيدًا؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.