Джанго-Аллах, не сохраняя дополнительное поле на пользовательском RegistrationForm - PullRequest
0 голосов
/ 22 апреля 2019

Я не могу правильно расширить форму регистрации Джанго-Аллаута.

Поля, которые мне нужны, отображаются в моей форме регистрации, но поле rappa_name не сохраняется в моей базе данных.

Я подписался на эту тему: Как настроить профиль пользователя при использовании django-allauth

Но не смог заставить его работать.

Мои формы.py:

from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm


User = get_user_model()


class UserCreationForm(UserCreationForm):

    rappa_name = forms.CharField(label = "Rappa Name")

    class Meta(UserCreationForm.Meta):
        model = User

    def signup(self, request, user):

        user.rappa_name = self.cleaned_data['rappa_name']
        user.save()
        return user

и мои models.py


class User(AbstractUser):

    # raooa name of user
    rappa_name = CharField(_("Rappa Name"), default='', max_length=255)

    def get_absolute_url(self):
        return reverse("users:detail", kwargs={"username": self.username})

Я убедился, что мой settings.py имеет

ACCOUNT_FORMS = {
'signup': 'myproject.users.forms.UserCreationForm',
}

Мне нужно, чтобы имя rappa_name было сохранено как поле с пользователем, но в настоящее время оно не сохраняется

1 Ответ

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

Решено: я переместил поле rappa_name в свой профиль, а затем изменил RegistrationForm на:

class UserCreationForm(SignupForm):

    rappa_name = forms.CharField(max_length=30, label='Rappa Name')

    def save(self, request):

        # Ensure you call the parent classes save.
        # .save() returns a User object.
        user = super(UserCreationForm, self).save(request)

        # Add your own processing here.
        profile = user.profile
        profile.rappa_name = self.cleaned_data['rappa_name']
        profile.save()
        # You must return the original result.
        return user

Я следовал за документами здесь https://django -allauth.readthedocs.io / en / latest / forms.html .

...