Доступ к полю связанной модели django

Всех приветствую! Имеется django модель UserProfile связанная с встроенной моделью User таким образом:

class UserProfile(models.Model):
user = models.OneToOneField(
    User,
    verbose_name='Пользователь',
    on_delete=models.CASCADE,
    related_name='profile'
)

Нужно в форме модели UserProfile получить доступ к полю модели User.email для изменения. Вопрос: Как это лучше реализовать? Не получается в модели UserProfile прямо обратиться к полю модели User. Пока вижу 2 варианта:

  1. Как-то писать сложную форму которая будет обращаться к полям связанной модели
  2. Писать raw SQL запрос для переноса поля email в модель профиля

Модель UserProfile создается по сигналу post_save во время регистрации User'а.

Какие инструменты использовать, в какую сторону идти, может наследование?


Ответы (1 шт):

Автор решения: bestpilotingalaxy

Поразбиравшись в вариантах решения этого вопроса пришел к оптимальному для себя варианту, отнаследовал UserProfile от модели User, что без изменения самой модели User(а это действительно оказалось нелегко после того как первые миграции сделаны) дало мне доступ ко всем полям и изменению данных в них через вторичную модель (UserProfile). Возможно в целом это не самое правильное решение, т к поля от каждой модели будут храниться в разных таблицах. Чтобы избегать таких сложностей стоит перед первыми миграциями в проекте определять кастомную модель User(AbstractUser) и указать ее в settings.py как здесь:

https://testdriven.io/blog/django-custom-user-model/

→ Ссылка