Форма обновления Django с несколькими изображениями

Я пытаюсь реализовать форму обновления товара с несколькими изображениями. Я уже сделал основную форму, но столкнулся со следующей проблемой: Когда пользователь хочет обновить изображение с помощью набора форм, он может использовать только квадратные изображения, поэтому я реализовал пользовательскую валидацию для этого. Но вот в чем проблема: после валидации исчезает "текущее" изображение формы и флажок "очистить".

Вот что это такое: неправильная форма после валидации

Вот как это должно быть + сообщение об ошибке валидации (его нет на скриншоте): правильная форма после валидации

Единственное место, где может быть isse, это следующий кусок кода

form.instance = form.clean_data.get('id') устраняет проблему, когда после отправки формы она показывает мне загруженное изображение (которое, кстати, не является действительным), потому что я получаю его из form.instance.image.url:

class ProductImageUpdateInlineFormSet(BaseInlineFormSet):
    def clean(self):
        super().clean()
        for form in self.forms:
            if form.cleaned_data and form.cleaned_data.get('image'):
                try:
                    square_image_validator(form.cleaned_data.get('image'))
                except ValidationError as ex:
                    form.instance = form.cleaned_data.get('id')
                    form.add_error('image', ex.message)


# FormSet for updating product images
ProductImageUpdateFormSet = inlineformset_factory(Product,
                                                  ProductImage,
                                                  formset=ProductImageUpdateInlineFormSet,
                                                  fields=['image'],
                                                  max_num=3,
                                                  min_num=1,
                                                  can_delete=False)


class ProductUpdateForm(ProductAddForm):
    def __init__(self, data=None, files=None, instance=None, **kwargs):
        super().__init__(data=data, files=files, instance=instance, **kwargs)
        self.image_formset = ProductImageUpdateFormSet(data=data, files=files, instance=instance, **kwargs)
        self.fields['price'].initial = instance.price
Вернуться на верх