Django UserCreationForm在电子邮件已存在时引发验证错误



嗨,我是Django的新手。我有一个从UserCreationForm继承的UserRegisterForm。一切正常

class UserRegisterForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ["username", "email", "password1", "password2"]

现在,如果电子邮件已经在数据库中,我希望在电子邮件输入框附近显示一个"电子邮件已经存在"的标志。我试过:

class UserRegisterForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ["username", "email", "password1", "password2"]
def clean_email(self):
username = self.cleaned_data.get("username")
if User.objects.filter(username=username).exists():
raise forms.ValidationError("Username is not unique")
return username
def clean_username(self):
email = self.cleaned_data.get("email")
if User.objects.filter(email=email).exists():
raise forms.ValidationError("Email is not unique")
return email

它不起作用。如果有人能帮忙,我会很高兴的。

切换两个方法名称:

def clean_username(self):
username = self.cleaned_data.get("username")
if User.objects.filter(username=username).exists():
raise forms.ValidationError("Username is not unique")
return username
def clean_email(self):
email = self.cleaned_data.get("email")
if User.objects.filter(email=email).exists():
raise forms.ValidationError("Email is not unique")
return email

最新更新