Форма обновления 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