如何覆盖Django注册视图类

时间:2019-04-17 03:16:59

标签: django django-allauth class-based-views allauth

我想覆盖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。 我不需要建议更改公司模型中默认值的答案。那不是我试图解决这个问题的方法。

1 个答案:

答案 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中找到。