UpdateView не удаляет изображение при обновлении формы - Django
У меня есть форма, с помощью которой пользователь может загружать картинки в пост, это работает нормально, но проблема в том, что когда пользователь хочет удалить текущую картинку, которая есть в посте. Она может быть обновлена на другую картинку, но она не может быть удалена из поста, чтобы стать "Пустой".
Models.py
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
form_class = PostEditForm
model = Post
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
return False
forms.py
class PostEditForm(forms.ModelForm):
thumb = forms.ImageField(required=False, widget=forms.FileInput)
class Meta:
fields = ['title', 'content', 'thumb', 'date_start', 'start_time',
'date_end', 'end_time', ]
model = Post
По умолчанию для поля изображения с загруженным файлом вы должны получить текст "Currently", который указывает на текущее изображение, и флажок "Clear", который позволит вам снять настройку поля.
Причина отсутствия этих опций заключается в том, что вы явно установили виджет fields на FileInput. Вместо этого вы должны использовать ClearableFileInput [Django docs] (или просто пропустить аргумент виджета, так как он используется по умолчанию), который дает вам эти опции:
class PostEditForm(forms.ModelForm):
thumb = forms.ImageField(required=False, widget=forms.ClearableFileInput)
class Meta:
fields = ['title', 'content', 'thumb', 'date_start', 'start_time',
'date_end', 'end_time', ]
model = Post