Django/Python中保存PDF字节流到数据库出现_committed错误如何解决
报错原因
你使用的document字段是Django的FileField类型,该类型字段不支持直接赋值原始bytes数据,它仅接受Django内置File类及其子类的实例。_committed是Django文件类用于标记文件存储状态的内置属性,原生bytes对象不存在该属性,因此触发报错。
解决方法
使用Django内置的ContentFile类将原始bytes包装为符合要求的文件对象即可,操作代码如下:
- 首先导入
ContentFile
from django.core.files.base import ContentFile
- 修改赋值存储逻辑
# 参数1为pdf字节数据,参数name为保存到数据库/存储后端的文件名,可按需自定义 pdf_content = ContentFile(myPDF, name="output.pdf") obj.document = pdf_content obj.save()
你也可以直接调用字段的save方法完成写入,无需单独调用模型的save:
obj.document.save("output.pdf", ContentFile(myPDF), save=True)
内容的提问来源于stack exchange,提问作者bones225
相关产品推荐
相关产品推荐

