处理自定义用户模型Django-Allauth

时间:2019-04-20 21:45:15

标签: python django django-allauth allauth

我有一个自定义用户模型,它是Django User的扩展,我想注册该用户模型,而不仅仅是默认模型。

为此,我使用allauth docACCOUNT_SIGNUP_FORM_CLASS设置。

这就是我在 settings.py 中拥有的内容:

ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.SignupForm'

并在 myapp / forms.py 中:

class SignupForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = MyUser

    def signup(self, request, user):
        print('test')
        user.save()
        MyUser(user=user).save()

应执行signup()函数:

  

此类[SignupForm]应该实现def signup(自身,请求,用户)方法,其中user表示新注册的用户。

但不是(未打印test)。仅保存 User MyUser 未保存。 我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您正在这里混合两件事:

  1. 您正在使用ACCOUNT_SIGNUP_FORM_CLASS来告诉all-auth使用哪种自定义注册表单
  2. 您的自定义注册表单是继承自django自己的UserCreationForm

通过这种方式,signup()方法将永远不会被调用。

如果您查看this line,您会发现在某个地方调用了signup()方法。 因此,如果您想充分利用all-auth的内置表单,建议您从SignupForm库继承all-auth

再次,根据您的方法判断,您可能想考虑设置AUTH_USER_MODEL=MyUser