Обрабатывать пользовательскую модель Джанго-Аллаута - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть пользовательская модель пользователя , которая выходит из User Django, и я хочу зарегистрировать эту модель пользователя вместо только модели по умолчанию.

Для этого я использую настройку ACCOUNT_SIGNUP_FORM_CLASS согласно allauth doc .

Это то, что у меня есть в settings.py :

ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.SignupForm'

А в myapp / forms.py :

class SignupForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = MyUser

    def signup(self, request, user):
        print('test')
        user.save()
        MyUser(user=user).save()

Функция signup() должна быть выполнена:

Этот класс [RegistrationForm] должен реализовывать метод регистрации def (self, request, user), где user представляет недавно зарегистрированного пользователя.

Но это не так (test не печатается). Только Пользователь сохраняется, MyUser - нет. Что я делаю не так?

1 Ответ

1 голос
/ 21 апреля 2019

Вы смешиваете 2 вещи здесь:

  1. Вы используете ACCOUNT_SIGNUP_FORM_CLASS, чтобы сообщить all-auth, какую пользовательскую форму регистрации использовать
  2. Ваша пользовательская форма регистрациинаследование от собственного django UserCreationForm

Таким образом метод signup() никогда не будет вызываться.

Если вы посмотрите на эту строку you 'увидим, что есть место, где вызывается метод signup().Итак, если вы хотите полностью использовать встроенные формы all-auth, я бы порекомендовал вам наследовать SignupForm из библиотеки all-auth.

Еще раз, судя по вашему подходу, вы можете захотетьрассмотрим настройку AUTH_USER_MODEL=MyUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...