我创建了一个使用电子邮件using this example的自定义django用户帐户创建系统。我想将电子邮件和密码中“需要此字段”的错误消息合并为一条错误消息,其中显示“电子邮件和密码字段不能留空”
答案 0 :(得分:1)
您应该从UserCreationForm
而不是forms.Form
继承forms.ModelForm
,使用required=False
在其中定义电子邮件/密码字段,并检查clean()
方法中的两个字段。
这样的事情:
class UserCreationForm(forms.Form):
email = forms.EmailField(required=False)
password = forms.CharField(required=False, widget=forms.PasswordInput)
def clean(self):
email = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
if not (email and password):
raise forms.ValidationError(
'email and password fields cannot be left blank')
def save(self, commit=True):
user = User(email=self.cleaned_data['email'])
user.set_password(self.cleaned_data['password'])
if commit:
user.save()
return user
答案 1 :(得分:0)
您可以为模型编写Model.clean
class MyCustomUser(AbstractBaseUser):
usermail = models.EMailField(.......)
def clean(self):
if not self.usermail and not self.password:
raise ValidationError({'usermail': 'Mail address and Password are required!'})
这会引发指向usermail
字段的验证错误。