Как переопределить класс представления регистрации django - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу переопределить представление регистрации всех пользователей django для ввода значения дополнительного поля.

В этом случае пользовательская модель имеет внешнее поле, которое комбинируется с моделью компании.

from allauth.account.views import SignupView as AllAuthSignupView
from .models import Company

class SignupView(AllAuthSignupView):
    def save(self):
        user = super(SignupView, self).save()
        a_company = get_object_or_404(Company, name='A')
        user.company = a_company

        return user

Тем не менее, это только сохраняет имя пользователя, пароль, электронную почту. Поле компании - NULL. Мне не нужен ответ, который рекомендует изменить значение по умолчанию в модели компании. Я не пытаюсь решить эту проблему.

1 Ответ

0 голосов
/ 17 апреля 2019

Вместо того, чтобы переопределять представление, вы можете просто создать новую форму, чтобы сохранить дополнительные данные.Например:

companies = (
    ('comapny_name_1', 'ABC'),
    ('comapny_name_2', 'DEF'),
)


class SignupForm(forms.Form):
    company = forms.ChoiceField(choices=companies)

    def signup(self, request, user):
        user.company = Company.objects.get(name=self.cleaned_data['company'])
        user.save()

Затем добавьте Путь к форме к ACCOUNT_SIGNUP_FORM_CLASS в settings.py:

ACCOUNT_SIGNUP_FORM_CLASS = 'path.to.SignupForm' 

Дополнительную информацию можно найти в документации .

...