Django. Две модели в одном классе представления UpdateView связанных через OneToOneField

Хочу расширить стандартную модель User путём создания связанной таблицы. Мне нужно добавить одно поле, и сделать страницу с формой редактирования стандартного поля email из User, и поля из связанной таблицы.

Связанная с User модель:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    show_in_records = models.BooleanField(default=1)

def __str__(self):
    return self.user.username

Форма:

class UserProfileFormTest(forms.ModelForm):
    show_in_records = forms.BooleanField(label='Show your records in the main table of records', widget=forms.CheckboxInput(attrs={'class': 'form-check-input', 'placeholder': ''}), required=False)
    email = forms.EmailField(label='Email', widget=forms.EmailInput(attrs={'class': 'form-control', 'placeholder': ''}))

    class Meta:
         model = UserProfile
         fields = ('email', 'show_in_records')

views.py

class UserProfileView(LoginRequiredMixin, UpdateView):
    model = UserProfile
    form_class = UserProfileFormTest
    template_name = 'main/user_profile.html'
    success_url = reverse_lazy('home')

    def get_object(self, queryset=None):
        user_id = self.request.user.pk
        user_obj = UserProfile.objects.get(user=user_id)

        return user_obj

urls.py

from main.views import *

urlpatterns = [
    path('', Index.as_view(), name='home'),
    path('user_profile/', UserProfileView.as_view(), name='user_profile'),
    ..
]

user_profile.html

{% extends 'main/base.html' %}

{% block content %}

<div class="d-flex justify-content-center">
    <form method="post" class="border rounded-2 p-4 mw-100 register needs-validation" novalidate>
        {% csrf_token %}

        {% for f in form %}
            {% if f.widget_type == 'checkbox' %}
                <div class="form-check mb-3">
                    {{ f }}
                    <label for="{{ f.id_for_label }}" class="form-check-label">{{f.label}}</label>
                    <div class="invalid-feedback">{{ f.errors }}</div>
                </div>
            {% else %}
                <div class="form-floating div-input mb-3">
                    {{ f }}
                    <label for="{{ f.id_for_label }}">{{f.label}}</label>
                    <div class="invalid-feedback">{{ f.errors }}</div>
                </div>
            {% endif %}
        {% endfor %}

        <div class="text-danger form-error">{{ form.non_field_errors }}</div>

        <div class="d-flex justify-content-end align-items-center">
            <button type="submit" class="btn btn-dark edit_profile1">Save</button>
        </div>
    </form>
</div>

{% endblock %}

Проблема такая: Чекбокс, который поле модели UserProfile, и выводится корректно, и сохраняется при отправке формы. А вот поле email из модели User выводится пустым, и не сохраняется если туда что то написать. Но при этом, происходит валидация поля email, если оставить пустым или написать что то не похожее на email будет ошибка валидации формы. Т.е. Django в принципе понимает, что я от него хочу, он корректно валидирует и поле email из User, и поле show_in_records из UserProfile. Но если show_in_records и выводиться корректно и обновляется, то email и не выводится и не обновляется. И самое печальное, что никаких ошибок ни при запуске, ни при отправке формы, не выводиться. И я прям не знаю что не так и куда копать, буду рад любым мыслям.

Вернуться на верх