Как сделать Django из поля Field Unique? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть форма регистрации, где я хочу, чтобы данные поля электронной почты и мобильного номера были уникальными ....

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.', unique=True)
    mobile_no = forms.CharField(validators=[max_length=17, initial='+91', unique=True)  

В настоящее время я использую unique=True, но при этом возникает ошибка Error ...

TypeError: __init__() got an unexpected keyword argument 'unique'

1 Ответ

0 голосов
/ 04 октября 2018

Самый простой и быстрый способ (как для вас, так и для сервера) - внедрить его в вашу модель, установив unique=True.
Если вы все равно хотите использовать его в форме, вам нужно переопределить clean

Очистка электронной почты:

class SignUpForm(UserCreationForm):
    ...

    def clean_email(self):
        email = self.cleaned_data['email']
        if User.objects.filter(email=email).exists():
            raise ValidationError("Email already exists")
        return email

Теперь form.is_valid() выдаст ошибку, если учетная запись пользователя с данным адресом электронной почты уже существует.
Я думаю, вы можете выяснить, как сделать то же самое для номера мобильного телефона сейчас.

...