Django - UpdateView: После обновления не суперпользователем человек, который создал, получает изменение на none

Моя проблема в том, что когда я обновляю модель с помощью класса MovieUpdateView(UpdateView) и я не являюсь суперпользователем, человек, который создает, получает изменение на None, когда я хочу, чтобы он оставался старым. Я знаю, что проблема в том, что я изменяю это поле в шаблоне только для суперпользователя, но не знаю, как его изменить.

просмотров:

class MovieUpdateView(UpdateView):
model = Movie
template_name = 'movies_collection/form_movie_update.html'
fields = ['title', 'gender', 'youtube_trailer_url', 'user', 'director']
success_url = reverse_lazy('movie-list')

template:

<form method="post" novalidate>
        {% csrf_token %}
            <div class="">

                <p> Title: <b>{{ form.title }}</b> </p>
                <p> Gender: <b>{{ form.gender }}</b> </p>
                <p> YouTube trailer url: <b>{{ form.youtube_trailer_url }}</b> </p>
                <p> Director: <b>{{ form.director }}</b> </p>
                {% if user.is_superuser %}
                    <p> User: <b>{{ form.user }}</b> </p>
                {% endif %}

        <button type="submit" class="btn btn-primary btn-block">Submit</button>
    </form>

Я нашел ответ на свой вопрос:

Нужно добавить в view def form_valid и tempalte останется как было

    def form_valid(self, form):
    
    if self.request.user.is_superuser:
        form.save()
    else:
        form.instance.user = self.request.user
        form.save()
    return redirect('movie-list')
Вернуться на верх