Как правильно загружать несколько изображений

У меня есть простая модель, которая имеет четыре различных поля fileFields для загрузки различных файлов и изображений. вот мои модели:

class DocumentInfo(models.Model):
    id = models.AutoField(primary_key=True)
    certificate = models.FileField(upload_to="documents", null=True)
    id_card = models.FileField(upload_to="documents", null=True)
    service_certificate = models.FileField(upload_to="documents", null=True)
    educational_certificate = models.FileField(upload_to="documents", null=True)

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

class DocumentForm(forms.ModelForm):
    class Meta:
        model = DocumentInfo
        fields = ['certificate','id_card','service_certificate','educational_certificate']

views.py:

def document_info(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            form.instance.user = request.user
            form.save()
            return redirect('document')
        if 'delete' in request.GET:
            return delete_item(DocumentInfo, request.GET['id'])
    else:
        form = DocumentForm()
    documents = DocumentInfo.objects.filter(user=request.user)

    context = {
        'form': form,
        'documents': documents,
    }
    return render(request, 'reg/documents.html', context)

сначала все работает нормально, но я не могу ничего перезагрузить! загруженное изображение не сохраняется во второй раз и не удаляется. что я делаю не так?

попробуйте это. views.py

def document_info(request):
    documents = DocumentInfo.objects.filter(user=request.user).order_by('-pk')
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES,instance=documents[0])
        if form.is_valid():
            if not documents:
                form.instance.user = request.user
            form.save()
            return redirect('document')
  
    else:
        form = DocumentForm(instance=documents[0])
    

    context = {
        'form': form,
        'documents': documents,
    }
    return render(request, 'reg/documents.html', context)
Вернуться на верх