Django ValueError Данное имя пользователя должно быть установлено из формы self в переопределенном методе сохранения формы

Я работаю над проектом django simple 3.2.9. Когда я пытаюсь переопределить метод сохранения моей формы, я получаю следующую ошибку:

ValueError Данное имя пользователя должно быть установлено из формы self

Это довольно раздражает, потому что если я не переопределяю и вызываю функцию сохранения из представления, она работает просто отлично, но если я переопределяю метод, кажется, что он не может получить атрибуты self из формы, хотя он может сделать это для других методов валидации в классе.

Это мой класс RegisterForm.

class RegisterForm(forms.Form):
    username=forms.CharField(
        required=True,
        min_length=4,max_length=50,
        widget=TextInput(attrs={
            'class':'form-control'
        })
    )
    email=forms.EmailField(
        required=True,
        min_length=4,max_length=50,
        widget=TextInput(attrs={
            'class':'form-control'
        })
    )
    pwd=forms.CharField(
        required=True,
        min_length=4,max_length=50,
        widget=PasswordInput(attrs={
            'class':'form-control'
        })
    )
    pwdr=forms.CharField(
        required=True,
        min_length=4,max_length=50,
        widget=PasswordInput(attrs={
            'class':'form-control'
        })
    )

    def clean_username(self):
        username=self.cleaned_data.get('username')
        if User.objects.filter(username=username).exists():
            raise forms.ValidationError('Ese nombre de usuario ya se encuentra en uso')
        return username

    def clean_email(self):
        email=self.cleaned_data.get('email')
        if User.objects.filter(email=email).exists():
            raise forms.ValidationError('Ese email ya se encuentra en uso')
        return email

    def clean(self):
        cleaned_data=super().clean()

        if cleaned_data.get('pwd')!= cleaned_data.get('pwdr'):
            self.add_error('pwdr','Las contraseñas no coinciden')
            return redirect('register')

        return redirect('home')

    def save(self):
        username=self.cleaned_data.get('username')
        email=self.cleaned_data.get('email')
        pwd=self.cleaned_data.get('pwd')
        
        return User.objects.create_user(
            username,
            email,
            pwd
        )

Это содержимое self из print(self) внутри метода save

label for="id_username">Имя пользователя:<input

type="text" name="username" value="vidalon" class="form-control" maxlength="50" minlength="4" required id="id_username">

. Email: Pwd: Pwdr:

Заранее спасибо

Я получил это из django docs

где мы можем прочитать следующее:

Обратите внимание, что Form.add_error() автоматически удаляет соответствующее поле из clean_data.

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