django allauth настраиваемая форма регистрации для назначения разных групп
У меня есть два типа пользователей в системе, я хочу назначить соответствующую группу во время регистрации. Ссылаясь на Как настроить профиль пользователя при использовании 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'
Кроме того, я настроил Аллаута для использования электронной почты для входа в систему.
Спасибо за вашу помощь.
1 ответ
Решение
Регистрация - это метод переопределения, а не сохранения.
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'