在注册Django allauth时将组分配给用户

2024-04-25 12:09:39 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试将我的网站授权从Django主授权更改为allauth。我根据allauth中的标准注册表单制作了一个自定义注册表单。我根据数据库中预先添加的组对象添加了choicefield。现在,我尝试根据用户在注册表单中所做的选择将其分配到组中。我正在覆盖注册方法,以便将用户的选择添加到数据库中的用户。用户已注册,但根本没有分配给任何组。我被困在如何解决这个问题上

forms.py:

class CustomSignupForm(SignupForm):
    user_group = forms.ModelChoiceField(queryset=Group.objects.exclude(name='admin').exclude(name='personeel'),
                                        widget=forms.RadioSelect,
                                        initial=('particulier')
                                        )
    first_name = forms.CharField(max_length=30, label='First Name')
    last_name = forms.CharField(max_length=30, label='Last Name')

    fields = ('user_group', )

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        role = self.cleaned_data['user_group']
        group = role or None
        g = Group.objects.get(name=group)
        user.groups.add(g)
        user.save()
        return user

设置.py

ACCOUNT_FORMS = {
    'signup': 'users.forms.CustomSignupForm',
}

将名字和姓氏正确分配给用户实例中的正确字段。signup方法中的role变量应返回选择字段的所选值(“zakelijk”或“particulier”)。然后,g变量将该值指向group.name,并添加g值

我错过什么了吗


Tags: 用户nameself数据库data注册表groupforms