为了账号安全,请及时绑定邮箱和手机立即绑定

Django - 使用 xhtml2pdf 将生成的 PDF 保存在模型中

Django - 使用 xhtml2pdf 将生成的 PDF 保存在模型中

动漫人物 2023-06-27 13:14:38
我正在尝试使用 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()

如此简单,不敢相信我在这个问题上坚持了这么久。


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信