Как использовать modelformset_factory с ajax-запросом - django

Я пытаюсь отправить форму с modelformset, которая загружает несколько изображений с помощью ajax, но она сохраняет только родительскую форму, а не модель formset_factory! вот что я пробовал ..

    const form = document.getElementById('post-form-add-booking')
    form.addEventListener("submit",submitHanler);
    function submitHanler(e){
        e.preventDefault();
        $.ajax({
            type:'POST',
            url:"{% url 'booking:add_booking',
            data:$("#post-form-add-booking").serialize(),
            dataType:'json',
            mimeType:'multipart/form-data',
            success:successFunction,
            error:errorFunction,
                        
        })        
    }

models.py

class Document(models.Model):
    booking =models.ForeignKey(Booking,on_delete=models.PROTECT)
    docs = models.ImageField(upload_to=upload_docs)

forms.py

class UploadDocumentsForm(forms.ModelForm):
    class Meta:
        model = Document
        fields = ['docs']
UploadDocumentFormSet = modelformset_factory(Document,form=UploadDocumentsForm,extra=1,can_delete=True)

my views.py

def add_booking(request,room_no):
    form = BookingForm(prefix='form')
    images = UploadDocumentFormSet(queryset=Document.objects.none())


    if request.is_Ajax() and request.method == 'POST':
        form = BookingForm(request.POST,prefix='form')
        images = UploadDocumentFormSet(request.POST,request.FILES)
        if form.is_valid():
            checkout_within_dates = None
            check_in = form.cleaned_data.get('check_in')
            check_out = form.cleaned_data.get('check_out')
            checkin_within_dates = Q(check_in__lte=check_in) & Q(check_out__gte=check_in)
            if check_out:
                if check_out > check_in:
                    checkout_within_dates = Q(check_in__lte=check_out) & Q(check_out__gte=check_out)

                    if room_number.rooms.filter(checkin_within_dates | checkout_within_dates).exists():
                        error_message = f'taken {check_in} - {check_out}'
                        
                        return JsonResponse({'success':False,'error_taken':True,'error_message':error_message},status=400)
                    else:
                        obj = form.save(commit=False)
                        obj.room_no = room_number
                        obj.admin = request.user
                        obj.save()  
                       
                        for img in images:
                            if img.is_valid() and img.cleaned_data !={}:
                                img_post = img.save(commit=False)
                                img_post.booking = obj
                                img_post.save()
                        success_meesage = f' {room_number.room_no} success'
                        return JsonResponse({'success':'success','success_msg':success_meesage})
                else:
                    error_message=f'please make sure you the two dates are valid'
                    return JsonResponse({'success':False,'error_taken':True,'error_message':error_message},status=400)

         return JsonResponse({'success':'success','success_msg':success_meesage})
        else:
            return JsonResponse({'success':'has_error','error_form_msg':form.errors,'error_formset_msg':formset.errors},status=400)
        

context = {'form':form,'lists':lists,'formset':formset,'room_number':room_number,
'current_booking':current_booking,'visitorformset':visitorformset,'images':images}

return render(request,'booking/add_booking.html',context)

он сохраняет только форму бронирования, есть ли что-то, что я должен изменить? или что-то для добавления изображений id меняется при нажатии на кнопку добавления изображения! id_form-0-docs и id_form-2-docs и так далее

Вернуться на верх