Не удается преобразовать ключевое слово 'phone' в поле django

Я добавил новое поле phone для номера телефона в регистрационную форму, но теперь она выдает ошибку, когда я отправляю ее, она выдает

Не удается преобразовать ключевое слово 'phone' в поле. Возможные варианты: адрес, date_joined, email, first_name, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, notifications, order, пароль, профиль, user_permissions, username

эта ошибка возникает при использовании стандартных форм создания пользователя Django вот мой forms.py

class SignUpForm(UserCreationForm):
    phone_regex = RegexValidator(regex=r'^\+?1?\d{10}$', message="Inform a valid phone number.")
    email = forms.EmailField(max_length=254, required=True, help_text='Required. Inform a valid email address.')
    phone = forms.CharField(validators=[phone_regex], max_length=10, required=True,  help_text='Required. Inform a valid phone number.')
    class Meta:
        model = User
        fields = ('username', 'email', 'phone', 'password1', 'password2',)

    def clean_email(self):
        email = self.cleaned_data['email']
        qs = User.objects.exclude(pk=self.instance.pk).filter(email__iexact=email)
        if qs.exists():
            raise ValidationError('A user with this email address already exists')
        return email
    
    def clean_phone(self):
        phone = self.cleaned_data['phone']
        qs = User.objects.exclude(pk=self.instance.pk).filter(phone__iexact=phone)
        if qs.exists():
            raise ValidationError('A user with same phone number already exists')
        return phone

views.py

class SignUpView(View):
    form_class = SignUpForm
    template_name = 'register.html'

    def get(self, request, *args, **kwargs):
        form = self.form_class()
        return render(request, self.template_name, {'form': form})

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():

            user = form.save(commit=False)
            user.is_active = False # Deactivate account till it is confirmed
            user.save()

            current_site = get_current_site(request)
            subject = 'Activate Your MySite Account'
            message = render_to_string('account_activation_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                'token': account_activation_token.make_token(user),
            })
            user.email_user(subject, message)

            messages.success(request, ('Please Confirm your email to complete registration.'))

            return render( request, 'activation_sent_success.html')

        return render(request, self.template_name, {'form': form})

любая помощь будет оценена по достоинству, спасибо

Ошибка вызвана полем phone:

class Meta:
    model = User
    fields = ('username', 'email', 'phone', 'password1', 'password2',)
                                    ^^^^^^

В вашем случае fields в class Meta используется для указания того, какие поля вашей модели User будут в вашей форме. Вы можете опустить некоторые поля вашей модели.

В вашей модели User нет поля с именем phone. Добавление этого поля в вашу модель решит вашу проблему, и не забудьте выполнить python manage.py makemigrations.

Если в вашей модели есть это поле, то вы можете забыть о применении миграций с python manage.py makemigrations.

Вернуться на верх