我正在使用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
但是,每当我尝试注册时,都不会创建新用户。我究竟做错了什么?如何做到这一点,以便创建用户并为其提供根据其名称自动生成的用户名?