Django Allauth自定义注册表单以分配不同组

7

我系统中有两种类型的用户,我想在注册时分配适当的组。参考如何在使用django-allauth时自定义用户资料,我认为我可以重写注册表单并执行以下操作:

class CustomSignupForm(forms.Form):
    login_widget = forms.TextInput(attrs={'type': 'email',
                                              'placeholder': _('email'),
                                              'autofocus': 'autofocus',
                                              'class': 'form-control'
                                      })

    email = forms.EmailField(label='Email', widget=login_widget)
    password = PasswordField(label='Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))
    password2 = PasswordField(label='Re-type Password', widget=forms.PasswordInput(attrs={'class': 'form-control'}))

    def save(self, request, user):
        role = request.GET.get('type')
        print(role)
        group = role or "group1"
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()

但我一直收到以下错误:
save() missing 1 required positional argument: 'user'

此外,我已经配置了allauth以使用电子邮件进行登录。
谢谢您的帮助。

这是解决方案:https://dev59.com/4Wct5IYBdhLWcg3wKqQd - Sardorbek Imomaliev
1个回答

6

注册(signup)是一种覆盖而不是保存(save)的方法。

class LocalSignupForm(forms.Form):
    pass

    def signup(self, request, user):
        role = request.session.get('user_type')
        group = role or "Default"
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()

此外,设置必须是:
ACCOUNT_SIGNUP_FORM_CLASS = 'useraccount.forms.LocalSignupForm'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接