اذهب إلى المحتوى
  • 0

كيفية جعل حقل إختياري optional في إستمارة Form في جانغو Django؟

Mohssen A Mohssen

السؤال

لدي نموذج Form في المشروع الخاص بي ويحتوي هذا النموذج على عدد من الحقول:

class DetailsForm(ModelForm):
    class Meta:
        model = Details
    def __init__(self, *args, **kwargs):
        super(DetailsForm, self).__init__(*args, **kwargs)
        
        # كيفية جعل هذه الحقول إختيارية
        self.fields['name'].widget = widgets.AdminSplitDateTime()
        self.fields['email'].widget = widgets.AdminSplitDateTime()

في نموذج Details نفسه جعلت الحقول إختيارية من خلال الخصائص null و blank في الكود التالي:

name = models.CharField(max_length=255, null=True, blank=True)
email = models.CharField(max_length=255, null=True, blank=True)

كيف يمكنني جعل هذه الحقلول غير مطلوبة (أي إختيارية optional) في النموذج DetailsForm؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

توجد طريقتان لجعل حقل إختياري في نموذج من نوع ModelForm  في جانغو:

  • الطريقة الأولى إعادة كتابة الحقل في النموذج وإضافة الخاصية required=False له:
    class DetailsForm(ModelForm):
    	name = forms.CharField(required=False) #أعدنا كتابة الحقل وجعله إختياري
        
        class Meta:
            model = Details
        def __init__(self, *args, **kwargs):
            super(DetailsForm, self).__init__(*args, **kwargs)
            
            # كيفية جعل هذه الحقول إختيارية
            self.fields['name'].widget = widgets.AdminSplitDateTime()
            self.fields['email'].widget = widgets.AdminSplitDateTime()

     

  • الطريقة الثانية: إضافة الخاصية required=False للحقل من خلال الدالة init:
    class DetailsForm(ModelForm):
        
        class Meta:
            model = Details
        def __init__(self, *args, **kwargs):
            super(DetailsForm, self).__init__(*args, **kwargs)
            
            # 
            self.fields['name'].widget = widgets.AdminSplitDateTime()
            self.fields['email'].widget = widgets.AdminSplitDateTime()
    
            # جعل الحقول اختيارية
            self.fields['name'].required = False
            self.fields['email'].required = False

     

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك جعل أي حقل إختياري في ملف forms.py عن طريق إستخدام required و إعطاء القيمة لها لتكون سلبية False على سبيل المثال الكود السابق يكون كالتالي :

questions = forms.CharField(help_text="Do you have any questions?", required=False)
about_yourself = forms.CharField(help_text="Tell us about yourself", required=False)

فهي تعادل تماماً القيم null = True , blank = True لكن في ملف forms.py

بالعلم أن required بشكل عام لا يتم إضافتها إلى معاملات الحقول في models.py حيثُ قد تم تعديلها في إصدار بايثون ما بين 2.7 إلى 3 لذلك فهي تعمل فقط داخل ملف forms.py و تعمل داخل models.py و لكن في الإصدارات القديمه لكلاً من Python و إطار العمل Django

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...