Пытаюсь сменить авторизацию моего сайта с основной Django auth на allauth. Я создал настраиваемую форму RegistrationForm, основанную на стандартной форме RegistrationForm в allauth. Я добавил поле выбора на основе предварительно добавленных объектов Group в базу данных. Теперь я пытаюсь назначить пользователя в группу на основе выбора, который он делает в форме регистрации. Я переписываю метод регистрации, чтобы добавить выбор пользователя к пользователю в базе данных. Пользователь регистрируется, но не попадает ни в одну группу. Я застрял в том, как это решить.
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
settings.py
ACCOUNT_FORMS = {
'signup': 'users.forms.CustomSignupForm',
}
Имя и фамилия правильно назначены правым полям в пользовательском экземпляре. Ролевая переменная в методе регистрации должна возвращать выбранное значение поля выбора («zakelijk» или «specificulier»). Затем переменная g указывает это значение на group.name, и значение g добавляется.
Я что-то здесь упускаю?