У меня есть пользовательская форма, уже работающая для обычного входа (с электронной почтой), теперь у меня проблема с социальной.
Следуя официальной документации
from allauth.socialaccount.forms import SignupForm
class MyCustomSocialSignupForm(SignupForm):
def save(self):
# Ensure you call the parent classes save.
# .save() returns a User object.
user = super(MyCustomSocialSignupForm, self).save()
# Add your own processing here.
# You must return the original result.
return user
А мой код следующий:
settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'accounts.forms.SignupFormEmail'
SOCIALACCOUNT_FORMS = {'signup': 'accounts.forms.SignupFormSocial'}
forms.py
class SignupFormEmail(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['localizacion'].label = 'Categorias'
localidades = Alcance.objects.exclude(pk=1).filter(zona_afectada=Alcance.CONCEJO)
localizacion = forms.ModelChoiceField(queryset=localidades, label='Concejo',empty_label="Selecciona tu concejo")
def signup(self, request, user: User):
self.user=user
user.residencia.add(self.cleaned_data['localizacion'])
user.save()
class SignupFormSocial(SignupForm):
localidades = Alcance.objects.exclude(pk=1).filter(zona_afectada=Alcance.CONCEJO)
localizacion = forms.ModelChoiceField(queryset=localidades, label='Concejo', empty_label="Selecciona tu concejo")
def __init__(self, sociallogin=None, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['localizacion'].label = 'Categorias'
def save(self,request):
# Ensure you call the parent classes save.
# .save() returns a User object.
user = super(SignupFormSocial, self).save()
# Add your own processing here.
user.residencia.add(self.cleaned_data['localizacion'])
user.save()
# You must return the original result.
return user
Проблема в том, что я получаю следующее исключениеdjango.core.exceptions.ImproperlyConfigured: Ошибка при импорте класса формы account.forms: «невозможно импортировать имя« BaseSignupForm »»
Я также пытаюсь унаследовать от form.Form и от RegistrationFormEmail, но ни один из них не работает
Как это сделать?
Обновлен с установленными приложениями в настройках:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# Django AllAuth
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.twitter',
#My apps
'accounts.apps.AccountsConfig',