我认为我遇到的问题相当罕见,因为我似乎无法在这里或 Google 上找到答案。
我的数据库中存储了几张图片,为了提供这些图片,我想对它们进行压缩,将创建的 ZipFile 存储在数据库中,该数据库以 AmazonS3 存储作为后端。更重要的是,所有这些操作都是在 Celery 管理的后台任务中完成的。现在...这是我编写的代码:
zipname = "{}.zip".format(reporting.title)
with ZipFile(zipname, 'w') as zf:
# Here is the zipfile generation. It quite doesn't matter anyway since this works fine.
reporting = Reporting.objects.get(pk=reporting_id)
reporting.pictures_archive = zf
reporting.save()
我收到错误:*** AttributeError:“ZipFile”对象没有属性“_commissed”
所以我尝试以这种方式将 zipfile 转换为 Django 文件: zf = File(zf)
但它返回一个空对象。
有人可以帮我吗?我有点被困住了...
最佳答案
这并不像我想象的那么复杂。 (我猜这可以解释为什么没有人在互联网上问这个问题)
使用 Python 3.3,您的字符串是 unicode,并且您主要使用 unicode 对象。文件需要字节数据才能正常工作,因此解决方案如下:
zipname = "{}.zip".format(reporting.id, reporting.title)
with ZipFile(zipname, 'w') as zf:
# Generating the ZIP !
reporting = Reporting.objects.get(pk=reporting_id)
reporting.pictures_archive.delete()
reporting.pictures_archive = File(open(zipname, "rb"))
reporting.save()
关于python - 将 ZipFile 对象存储到 Django 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758003/