Я использую класс Django Allauth SignUpForm.Раньше у меня была договоренность, которая включала только username, email, and password
, эти поля работали, поскольку они являются родными для класса.Однако я решил удалить username
и заменить его на full_name
, как показано на моей обновленной модели:
class User(AbstractBaseUser):
full_name = models.CharField(max_length=30)
username = models.CharField(max_length=15, unique=True, error_messages={
'unique': ("Username has already been taken.")
})
email = models.EmailField(max_length=100, unique=True, error_messages={
'unique': "Email has already been taken."
})
objects = UserManager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
Я перенес свою базу данных для достижения новых изменений.Затем я создал новую форму для своей формы:
class RegisterForm(SignupForm):
full_name = forms.CharField(max_length=30)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['full_name'].widget = forms.TextInput(attrs={"placeholder": ""})
self.fields['email'].widget = forms.EmailInput(attrs={"placeholder": ""})
self.fields['email'].label = "Email"
self.fields['password1'].widget = forms.PasswordInput(attrs={"placeholder": ""})
def save(self, request):
user = super(RegisterForm, self).save(request)
user.full_name = clean_data["full_name"]
user.save()
return user
Однако это не создает нового пользователя, когда я пытаюсь зарегистрироваться.Что я делаю неправильно?Как я могу сделать так, чтобы пользователь был создан и получил имя пользователя, автоматически сгенерированное на основе его имени?