【发布时间】:2015-04-28 14:07:37
【问题描述】:
我正在使用 AbstractUser 模型来创建自定义身份验证模型。
问题是我无法覆盖用户名字段的默认表单字段验证器,这是我迄今为止尝试过的:
class RegularUserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RegularUserForm, self).__init__(*args, **kwargs)
self.fields['username'].help_text = None
self.fields['username'].default_validators = []
self.fields['username'].validators = []
不知道如何做到这一点,覆盖 help_text 是成功的,我也尝试使用 [None] 而不是 [] 和 self.fields['username'].validators = [validate_username] 其中 validate_username 是我创建的自定义验证器。
以下是表单代码示例:
class RegularUserForm(forms.ModelForm):
username = forms.CharField(max_length=30, validators=[validate_username])
email1 = forms.EmailField(required=True, label='')
class Meta:
model = RegularUser
fields = ['username', 'password', 'email', 'email1', 'gender', ]
widgets = {'password': forms.PasswordInput(attrs={'placeholder': 'enter password'}),
'email': forms.EmailInput(attrs={'placeholder': 'enter email'})
}
def clean(self):
cleaned_data = super(RegularUserForm, self).clean()
email = self.cleaned_data.get('email')
email1 = self.cleaned_data.get('email1')
if email != email1:
self.add_error("email1", 'emails do not match')
return cleaned_data
感谢任何帮助!
【问题讨论】:
标签: django validation