Django - UpdateView: After update by not superuser person who create get change on none

Viewed 34

my problem is when i update my model by class MovieUpdateView(UpdateView) and i am not superuser, person who create get change on None when i want him stay old. Ik that issue is that i only change this field in template only for superuser but don't know how to change it.

views:

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>
1 Answers

I find answer on my question:

Needed to add in view def form_valid and tempalte stay like was

    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')
Related