首页 > 解决方案 > 创建记录后如何在 tryton 中调用自定义函数?

问题描述

创建记录后,我需要在非 tryton 数据库上执行通知。

我看到可以覆盖创建函数..但是有没有更好的解决方案可以确保在数据库提交之后?

我这样做

@classmethod
def create(cls, values):
    newObject = super(Inventory, cls).create(values)
    newObject.notifieToMainServer()

问候

标签: tryton

解决方案


是的,您可以使用tryton 事务的atexit函数在事务提交时调用函数。

所以你的代码将是这样的:

from trytond.transaction import Transaction

@classmethod
def create(cls, values):
   records = super().create(values)
   Transaction.atexit(notifyToMainServer)
   return records

如果需要在无法发送通知时阻止事务的提交,可以通过在 Transaction 上加入一些数据管理器来使用两阶段提交协议。Tryton 默认实现了一个sendmail_transactional函数,该函数可用作实现 DataManager 以发送您的自定义通知的参考。

希望能帮助到你!


推荐阅读