Сохранить zip в FileField django
У меня есть представление, которое создает два csv, и моя цель - застегнуть их и добавить в model.FileField
zip = zipfile.ZipFile('myzip.zip','w')
zip.writestr('file1.csv', file1.getvalue())
zip.writestr('file2.csv', file2.getvalue())
Я попробовал это, zip загружается, но когда я скачиваю его, у меня ошибка "архив поврежден или неизвестный формат"
Mymodel.objects.create(zip = File(open('myzip.zip','rb'))
Этот пример только что сработал для меня,
from django.core.files import File
from django.http import HttpResponse
from .models import ZipFile
import zipfile
from django.views import View
class ZipWriteView(View):
def get(self, request, *args, **kwargs):
with zipfile.ZipFile("myzip.zip", "w") as zip_obj:
zip_obj.write("polls/views.py") # add file 1
zip_obj.write("polls/admin.py") # add file 2
with open(zip_obj.filename, "rb") as f:
ZipFile.objects.create(file=File(f))
return HttpResponse("Done")