在对象及其所有相关对象被保存之后执行某些操作

时间:2019-02-14 16:36:33

标签: python django

我的项目中有InvoiceInvoiceItem

class Invoice(Model):
    ...
    pdf = FileField(...

    def save(...):
        super().save(...)
        self.generate_pdf()

    def generate_pdf(self):
        generate_pdf_from_self_and_invoiceitemset()
        save_pdf()

class InvoiceItem(...):
    item = ForeignKey('Invoice'...)
    ...

简单-我希望在创建或修改invoice之后生成PDF文件。问题在于此PDF不仅取决于invoice,而且也取决于invoice_items

如您所见,在创建或修改generate_pdf()之前,super().save()生成pdf之后的InvoiceItem方法。

我希望它在最后一个InvoiceItem保存之后(或在保存Invoice的情况下立即调用该方法)。

该怎么做?

我也可以将generate_pdf()放入InvoiceItem.save方法中,但是在任何保存之后多次生成pdf会浪费时间和资源。

如果可能的话,我更喜欢在模型层上调用方法,这样就不会有人忘记将其放入新表单或管理表单中。

0 个答案:

没有答案