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