在Django Allauth中保存自定义表单字段

时间:2018-08-25 21:41:23

标签: python django django-forms django-allauth

我正在使用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

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

0 个答案:

没有答案