正在尝试将我的网站授权从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值
我错过什么了吗
在Django Allauth中,将新用户从注册表单保存到数据库与在通用Django身份验证系统中略有不同。Allauth使用DefaultAccountAdapter来处理逻辑
要澄清上述问题,请参阅我的另一份question
相关问题 更多 >
编程相关推荐