Почему мой ModelFormSet продолжает обновлять одну и ту же запись вместо того, чтобы создавать новую?
У меня есть эти Модели, это все часть приложения, которое регистрирует события, которые имеют изображения через ImageAlbum:
class EventAlbum(models.Model):
uuid = models.UUIDField(
primary_key=True, default=uuid.uuid4, editable=False, unique=True)
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='eventos')
def get_main_image(self):
return self.images.get(main=True)
class EventImage(models.Model):
uuid = models.UUIDField(
primary_key=True, default=uuid.uuid4, editable=False, unique=True)
image = models.FileField('imagen', upload_to=upload_path)
main = models.BooleanField('principal', default=False)
album = models.ForeignKey(EventAlbum, related_name = 'images', on_delete=models.CASCADE)
И этот набор форм для изображений:
class BaseImageFormSet(BaseModelFormSet):
def clean(self):
"""Checks that there is only one main image"""
if any(self.errors):
return
boolean_arr = []
for form in self.forms:
if self.can_delete and self._should_delete_form(form):
continue
main_data = form.cleaned_data.get('main')
main = main_data if main_data is not None else False
if sum(boolean_arr) > 1:
raise ValidationError('There can only be one main image.')
boolean_arr.append(main)
Вот в моих представлениях:
class NewEventView(BaseView):
def get(self, request, *args):
ImageFormSet = modelformset_factory(
EventImage, fields=('image', 'main'),
extra=5, max_num=5, formset= BaseImageFormSet)
image_formset = ImageFormSet(prefix='images')
context = {'forms': {'image_formset': image_formset, }
return render(request, "events/events_add.html", context)
def post(self, request):
new_album = EventAlbum(event=new_event)
ImageFormSet = modelformset_factory(
EventImage, fields=('image', 'main'),
extra=5, max_num=5, formset= BaseImageFormSet)
image_formset = ImageFormSet(request.POST, request.FILES,
prefix='images')
if image_formset.is_valid():
new_album.save()
images = image_formset.save(commit = False)
for image in images:
image.album = new_album
image.save()
image_formset.save()
return HttpResponse('Ok', content_type='text')
else:
return Response((image_formset.errors, image_formset.non_form_errors()),
status=status.HTTP_400_BAD_REQUEST)
Дело в том, что ImageFormSet продолжает обновлять одни и те же записи вместо того, чтобы создавать новые. Почему?
Как я могу изменить это, может быть дело в шаблоне?