Django Crispy 表单根据需要设置模型字段

Posted

技术标签:

【中文标题】Django Crispy 表单根据需要设置模型字段【英文标题】:Django Crispy form set model field as required 【发布时间】:2018-04-18 20:27:38 【问题描述】:

我有一个模型表单,我想在其中将 required 属性设置为 True 以进行电子邮件验证

字段:-email

class RegisterMyBuisinessForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.form_action = '/registermybuisness/'
        Field('email', type='email')
        self.helper.add_input(Submit('submit', 'Submit',css_class="btn c-theme-btn c-btn-square c-btn-bold c-btn-uppercase"))
        super(RegisterMyBuisinessForm, self).__init__(*args, **kwargs)
    class Meta:
        model = RegistermyBusiness
        fields = ['name','email', 'org_name', 'contact','business_description','store_address','message','store_landmark','business_type','city']        

我试过了

self.fields['email'].required=True 

这导致类 RegisterMyBuisinessForm 没有字段错误

【问题讨论】:

请注意,您在表单类的名称和form_action 中拼错了Business 【参考方案1】:

您可以在__init__ 方法中更改self.fields['email']。您需要先致电super()

class RegisterMyBuisinessForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        ...
        super(RegisterMyBuisinessForm, self).__init__(*args, **kwargs)
        self.fields['email'].required = True
        ...

【讨论】:

以上是关于Django Crispy 表单根据需要设置模型字段的主要内容,如果未能解决你的问题,请参考以下文章

使用Django crispy表单,如何缩小TextField的文本框?

Django Crispy Forms 向 ModelFormSet 添加新的空表单

在 python 中通过 django-crispy-forms 渲染表单

使用Ajax验证并提交Django表单(django-crispy-forms)

替代 django-crispy-forms

Django:模板中的 Crispy 表单验证错误