我正在使用AbstractUser模型创建自定义验证模型。覆盖AbstractUser模型的默认django用户名验证器
的问题是,我无法覆盖的用户名字段的默认表单字段验证,这里是我迄今为止尝试:
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
任何帮助表示赞赏!
utils是我创建的库,其中包含我的项目的自定义过滤器和验证程序。 – HassenPy