Django переписывание представления функций в класс View UpdateView проблема с несколькими формами

Я пытаюсь переписать все мое приложение от функциональных представлений к представлениям класса. Сейчас я борюсь с UpdateView Я знаю, что он может принимать только один параметр FORM.

Но мне интересно, переписав код из тем (как у меня), как это сделать правильно и чтобы это работало. И есть ли смысл вмешиваться в замыслы разработчиков Django? Или просто оставить это представление как функцию представления?

Вот как выглядит сейчас views.py

@login_required
def edit_user_info(request):
    user = get_object_or_404(User, id=request.user.id)
    user_profile = get_object_or_404(UserProfile, profile=request.user)

    if request.method == "POST":
        user_form = UserForm(request.POST, instance=user)
        profile_form = UserProfileForm(request.POST, instance=user_profile)

        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            messages.success(request, "Your profile is updated successfully")
            return redirect(to="profile")
    else:

        user_form = UserForm(instance=user)
        profile_form = UserProfileForm(instance=user_profile)

    context = {
        "user_form": user_form,
        "profile_form": profile_form,
    }
    return render(request, "web/update_user_info.html", context)

forms.py

class UserForm(forms.ModelForm):
    email = forms.EmailField(required=False,label="Updated email address if different",
                             widget=forms.TextInput(attrs={'class': 'form-control'}))
    class Meta:
        model = User
        fields = ("email",)

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ("about_user","user_photo",)

и что я хотел бы сделать с помощью UpdateView или другого класса View MultiModelFormView или TemplateView

Кроме того, я хотел бы оставить авто заполненные формы, с данными пользователя

Этот код ниже не работает

class EditUserView(MultiModelFormView):
    form_classes = {
        'user_form' : UserForm,
        'profile_form' : UserProfileForm,
    }

    def get_success_url(self):
        return reverse('profile')

    def forms_valid(self, forms):
        user = forms['user_form'].save(commit=False)
        user_profile =forms['profile_form'].save(commit=False)
        return super(EditUserView, self).forms_valid(forms)

user_update.html

{% extends "web/layout.html" %}
{% block body %}
<br>
{% load crispy_forms_tags %}
<div class="card">
    <div class="card-header">
      Update your profile info:
    </div>
    <div class="card-body">
      <form method="POST">
            {% csrf_token %}
            <div class="form-group">
                {{forms.user_form|crispy}}
                {{forms.profile_form|crispy}}


OR

                {{user_form|crispy}}
                {{profile_form|crispy}}
            </div>
            <br>
            <button type="submit" class="btn btn-primary">Submit</button>
          </form>
        </div>
      </div>
      {% endblock %}

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