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

我正在尝试使用 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 专家可能知道发生了什么事吗?好像是这么简单的事情..


动漫人物
浏览 153回答 1
1回答

慕后森

最后我设法使用以下代码来做到这一点:                receipt_file = BytesIO(pdf.content)                 purch_upd = purchase.objects.get(pk=purch_id)                 purch_upd.receipt = File(receipt_file, filename)                 purch_upd.save()如此简单,不敢相信我在这个问题上坚持了这么久。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python