Django UserCreationForm повысить Ошибка проверки, когда электронная почта уже существует - PullRequest
0 голосов
/ 27 апреля 2020

Привет, я новичок в Django. Я получил UserRegisterForm, унаследованный от UserCreationForm. Все работает отлично

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

Это не сработало. Я буду так рад, если кто-нибудь может помочь.

1 Ответ

0 голосов
/ 27 апреля 2020

Переключение двух имен методов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...