我有一个自定义用户模型,它是Django User
的扩展,我想注册该用户模型,而不仅仅是默认模型。
为此,我使用allauth doc的ACCOUNT_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 未保存。
我在做什么错了?
答案 0 :(得分:1)
您正在这里混合两件事:
ACCOUNT_SIGNUP_FORM_CLASS
来告诉all-auth
使用哪种自定义注册表单UserCreationForm
通过这种方式,signup()
方法将永远不会被调用。
如果您查看this line,您会发现在某个地方调用了signup()
方法。
因此,如果您想充分利用all-auth
的内置表单,建议您从SignupForm
库继承all-auth
。
再次,根据您的方法判断,您可能想考虑设置AUTH_USER_MODEL=MyUser
。