Django:组合字段错误消息

时间:2014-12-25 10:48:54

标签: python django

我创建了一个使用电子邮件using this example的自定义django用户帐户创建系统。我想将电子邮件和密码中“需要此字段”的错误消息合并为一条错误消息,其中显示“电子邮件和密码字段不能留空”

2 个答案:

答案 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字段的验证错误。