Как я могу загрузить все файлы, относящиеся к определенному запросу, сразу в zip-файл?

У меня есть таблица, в которой хранятся все файлы, связанные с определенным запросом (определенный запрос может иметь несколько или несколько связанных файлов). Я использовал функцию download_zip_file, чтобы загрузить все файлы сразу. Но, к сожалению, я получаю ошибку, которая гласит: "[WinError 3] Система не может найти указанный путь: '/media/documents/my_needs_Zxvf8IN.docx'" Файл, который находится в url ошибки, существует. Я не знаю, что вызвало ошибку и как ее исправить. Есть ли у кого-нибудь подсказка? Моя функция загрузки zip здесь:

@login_required

def download_zip_file(request, docreq_id):
doc_req = Documents.objects.get(id=docreq_id)
if doc_req.sent_from_assignee:
    doc_ups = AMdocDocuments.objects.filter(docrequest__pk=docreq_id)
    filenames = list(map(lambda f: f.doc_file.url, doc_ups))
    zip_subdir = "%s %s" % (doc_req.request_title, doc_req.user_email)
    zip_filename = "%s.zip" % zip_subdir
    s = BytesIO()
    zf = zipfile.ZipFile(s, "w")
    for i, fpath in enumerate(filenames):
        fname = fpath.split("/")[-1]
        # Rename uploaded files to doc file
        ext = fname.split(".")[-1]
        if ext:
            fname = '%s' % smart_str(doc_ups[i].amdoc.doc_name + "." + ext)
        zip_path = "%s %s" % (zip_subdir, fname)
        zf.write(fpath, zip_path)
    zf.close()
    resp = HttpResponse(s.getvalue(), content_type="application/x-zip-compressed")
    resp['Content-Disposition'] = 'attachment; filename=%s' % zip_filename
    return resp
return Http404

вот мои ссылки:

from django.urls import path
from . import views    
app_name = 'account'
urlpatterns = [
path('login/', views.user_login, name='login'),
path('signup/', views.user_signup, name='signup'),
path('dashboard/', views.user_dashboard, name='dashboard'),
path('logout/', views.user_logout, name='logout'),
path('password_reset/', views.password_reset_request, name="password_reset"),
# TEST
path('document/', views.docrequest_list, name='docrequest_list'),
path('document/update/<int:pk>/', views.docrequest_update, name='docrequest_update'),
path('download/<int:docrequp_id>/', views.download_document, name='download-docrequpdate'),
path('download-zip/<int:docreq_id>/', views.download_zip_file, name='download-zip-docrequpdate')
]

моя модель:

class AMdocDocuments (models.Model):
amdoc = models.ForeignKey(AMdoc, on_delete=models.CASCADE, null=True, blank=True)
docrequest = models.ForeignKey(Documents, on_delete=models.CASCADE, null=True, blank=True)
doc_file = models.FileField(upload_to='documents/', null=True, blank=True)

def filename(self):
    return os.path.basename(self.doc_file.name)

и ошибка:

FileNotFoundError at /account/download-zip/16/
[WinError 3] The system cannot find the path specified: '/media/documents/my_needs_Zxvf8IN.docx'
Request Method: GET
Request URL:    http://127.0.0.1:8000/account/download-zip/16/
Django Version: 3.2.6
Exception Type: FileNotFoundError
Exception Value:    
[WinError 3] The system cannot find the path specified: '/media/documents/my_needs_Zxvf8IN.docx'
Exception Location: D:\Users\User\AppData\Local\Programs\Python\Python39\lib\zipfile.py, line 501, in from_file
Python Executable:  D:\ChangeCapitalSpain\VirtualRoom\Scripts\python.exe
Python Version: 3.9.6
Python Path:    
['D:\\ChangeCapitalSpain\\CCSpain',
 'D:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
 'D:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
 'D:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39\\lib',
 'D:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python39',
 'D:\\ChangeCapitalSpain\\VirtualRoom',
 'D:\\ChangeCapitalSpain\\VirtualRoom\\lib\\site-packages']
Server time:    Mon, 30 Aug 2021 17:36:56 +0200

Еще раз напоминаю: файл для загрузки (имя файла и папка, в которой он находится, верны).То есть папки media/document существуют и файл с точным именем существует в них, и кажется, что ошибка возникла в этой строке:

zf.write(fpath, zip_path)
Вернуться на верх