我想覆盖django all-auth注册视图以输入额外的字段值。
在这种情况下,用户模型具有一个外场,该外场与公司模型组合在一起。
from allauth.account.views import SignupView as AllAuthSignupView
from .models import Company
class SignupView(AllAuthSignupView):
def save(self):
user = super(SignupView, self).save()
a_company = get_object_or_404(Company, name='A')
user.company = a_company
return user
但是,这只会保存用户名,密码和电子邮件。公司字段为NULL。 我不需要建议更改公司模型中默认值的答案。那不是我试图解决这个问题的方法。
答案 0 :(得分:0)
除了覆盖视图之外,您还可以简单地创建一个新窗体来保存其他数据。例如:
^\D*+(?!(\s*\d\s*){10,}).*
^
然后将表单路径添加到companies = (
('comapny_name_1', 'ABC'),
('comapny_name_2', 'DEF'),
)
class SignupForm(forms.Form):
company = forms.ChoiceField(choices=companies)
def signup(self, request, user):
user.company = Company.objects.get(name=self.cleaned_data['company'])
user.save()
中的ACCOUNT_SIGNUP_FORM_CLASS
:
settings.py
更多信息可以在documentation中找到。