Как установить начальное значение поля, используя внешнее поле модели в Django? - PullRequest
0 голосов
/ 17 июня 2019

Я хочу установить начальное значение в форме профиля.

Модель профиля имеет отношение OneToOne с моделью пользователя.

Я получаю следующую ошибку при установке начального поля в init метод,

Объект 'ForwardOneToOneDescriptor' не имеет атрибута 'email'

Трассировка

Файл"/home/drogon/Crowdsocial_project/venv_ubuntu/lib/python3.6/site-packages/django/core/handlers/exception.py" во внутреннем 34. response = get_response (запрос)

File "/ home/drogon/Crowdsocial_project/venv_ubuntu/lib/python3.6/site-packages/django/core/handlers/base.py "в _get_response 126. response = self.process_exception_by_middleware (e, request)

File" /home / drogon / Crowdsocial_project / venv_ubuntu / lib / python3.6 / site-packages / django / core / handlers / base.py "в _get_response 124. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл "/ home / drogon / Crowdsocial_project / venv_ubuntu / lib / python3.6 / site-packages / django / views / generic / base.py "в представлении 68. вернуть self.dispatch (request, * args, ** kwargs)

File" / home / drogon / Crowdsocial_project /venv_ubuntu / lib / python3.6 / site-packages / django / views / generic / base.py "в отправке 88. обработчик возврата (request, * args, ** kwargs)

File" / home / drogon/Crowdsocial_project/venv_ubuntu/lib/python3.6/site-packages/django/views/generic/edit.py "в get 190. return super (). Get (request, * args, ** kwargs)

Файл "/home/drogon/Crowdsocial_project/venv_ubuntu/lib/python3.6/site-packages/django/views/generic/edit.py" в get 133. return self.render_to_response (self.get_context_data ())

Файл "/home/drogon/Crowdsocial_project/users/views.py" в get_context_data 90. context = super (ProfileSettingsView, self) .get_context_data (** kwargs)

File "/ home / drogon /Crowdsocial_project / venv_ubuntu / lib / python3.6 / site-packages / django / views / generic / edit.py "в get_context_data 66. kwargs ['form'] = self.get_form ()

Файл "/home/drogon/Crowdsocial_project/venv_ubuntu/lib/python3.6/site-packages/django/views/generic/edit.py" в get_form 33. return form_class (** self.get_form_kwargs ())

Файл "/home/drogon/Crowdsocial_project/users/forms.py" в init 144. self.initial ['profile_email'] = Profile.user.email

ИсключениеТип: AttributeError at / users / 12 / profile / settings Исключение Значение: у объекта 'ForwardOneToOneDescriptor нет атрибута' email '

Модель профиля

class Profile(models.Model):
    user            = models.OneToOneField(CustomUser, on_delete=models.CASCADE, null=True, blank=True)
    full_name       = models.CharField(max_length=30, null=True, blank=True)

Форма профиля

class ProfileSettingsForm(forms.ModelForm):

    full_name      = forms.CharField(required=False,
                                    widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    profile_email  = forms.CharField(required=False,
                                    widget=forms.TextInput(attrs={'readonly': 'readonly'}))

    def __init__(self, *args, **kwargs):
        super(ProfileSettingsForm, self).__init__(*args, **kwargs)

        self.initial['profile_email'] = Profile.user.email
        self.initial['full_name'] = Profile.user.name

    class Meta:
        model = Profile

        fields = ['image','full_name','biography','profile_email','linked_in','facebook',
                  'twitter','phone','education']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...