我正在尝试使用 xhtml2pdf 应用程序保存生成的 PDF。我希望它将 pdf 保存到模型中。pdf 已完美创建,浏览器会下载该文件,但我不想下载,而是将其保存到模型中,在我的 models.py 中,我告诉它保存到媒体文件夹中的文件夹中。Models.py:class purchase(models.Model): purchase_id = models.AutoField(primary_key=True) transaction_date = models.DateTimeField() method_payment = models.CharField(max_length = 20) cmr_name = models.CharField(max_length = 60) cmr_address = models.CharField(max_length = 90) cmr_postcode = models.CharField(max_length = 10) cmr_tel = models.CharField(max_length = 14) cmr_email = models.CharField(max_length = 40) cmr_pod = models.FileField(upload_to='customers_id') cmr_signature = JSignatureField() receipt = models.FileField(upload_to='receipts', null=True, blank=True) added_by = models.CharField(max_length = 30) item_brand = models.CharField(max_length = 50) product = models.CharField(max_length = 100) model = models.CharField(max_length = 100) serial = models.CharField(max_length = 50) item_brand2 = models.CharField(max_length = 50) product2 = models.CharField(max_length = 100) model2 = models.CharField(max_length = 100) serial2 = models.CharField(max_length = 50) item_brand3 = models.CharField(max_length = 50) product3 = models.CharField(max_length = 100) model3 = models.CharField(max_length = 100) serial3 = models.CharField(max_length = 50) def __str__(self): return '{}'.format(self.cmr_name)管理和数据库显示没有上传任何内容,我没有收到任何错误。在views.py文件中,这些代码行是我希望用pdf文件更新数据库的代码:receipt_file = File(BytesIO(pdf.content))
purchase.objects.filter(pk=purch_id).update(receipt=receipt_file)不幸的是,它没有做任何事情。有人可以帮忙吗?被困在这个有一段时间了。我尝试过在 stackoverflow 和其他网站上看到的其他几个答案。谢谢,任何帮助将不胜感激。Edit1:我尝试调用 save() 而不是 update,但是没有什么区别: receipt_file = File(BytesIO(pdf.content))
purch = purchase.objects.get(pk=purch_id)
purch.receipt = receipt_file
purch.save()Edit2:我也尝试了几个版本的内容和 IOString(content) 没有任何结果Edit3:仍然没有答案,任何 Django 专家可能知道发生了什么事吗?好像是这么简单的事情..
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
最后我设法使用以下代码来做到这一点:
receipt_file = BytesIO(pdf.content) purch_upd = purchase.objects.get(pk=purch_id) purch_upd.receipt = File(receipt_file, filename) purch_upd.save()
如此简单,不敢相信我在这个问题上坚持了这么久。
添加回答
举报
0/150
提交
取消