我如何覆盖odoo中的保存操作?
How can i override a save action in odoo?
我只是 Odoo.I 的新手,想覆盖在销售选项卡中创建客户时的保存方法(我使用的是 odoo 8)。
因此,当我单击保存时,我将向其他系统 (ESB) 发送一条 XML RPC 消息。
我将在许多 odoo 模块(包括广告)中进行这种覆盖,但我不知道从哪里开始?
我现在已经在我的系统上安装了 odoo,并从 git 存储库 (https://github.com/odoo/odoo/tree/8.0) 下载了源代码
请问我该怎么做?
谢谢
实际上可以调用两个ORM方法。创建时,保存按钮将调用模型 create()
,而在 update/write 时,它将调用 write()
。所以你必须创建你自己的自定义模块并覆盖这些方法。您应该调用 super()
然后对您的外部系统执行任何您想执行的操作。
Odoo 本身有很多这样的覆盖已经完成的例子。
一个简单的例子:
from openerp import models, api
class ResUsers(models.Model):
_inherit = "res.users"
@api.model
def create(self, vals):
self.do_something_else()
return super(ResUsers, self).create(vals)
@api.multi
def write(self, vals):
res = super(ResUsers, self).write(vals)
self.do_something_writefully_different()
return res
我只是 Odoo.I 的新手,想覆盖在销售选项卡中创建客户时的保存方法(我使用的是 odoo 8)。 因此,当我单击保存时,我将向其他系统 (ESB) 发送一条 XML RPC 消息。 我将在许多 odoo 模块(包括广告)中进行这种覆盖,但我不知道从哪里开始? 我现在已经在我的系统上安装了 odoo,并从 git 存储库 (https://github.com/odoo/odoo/tree/8.0) 下载了源代码 请问我该怎么做?
谢谢
实际上可以调用两个ORM方法。创建时,保存按钮将调用模型 create()
,而在 update/write 时,它将调用 write()
。所以你必须创建你自己的自定义模块并覆盖这些方法。您应该调用 super()
然后对您的外部系统执行任何您想执行的操作。
Odoo 本身有很多这样的覆盖已经完成的例子。
一个简单的例子:
from openerp import models, api
class ResUsers(models.Model):
_inherit = "res.users"
@api.model
def create(self, vals):
self.do_something_else()
return super(ResUsers, self).create(vals)
@api.multi
def write(self, vals):
res = super(ResUsers, self).write(vals)
self.do_something_writefully_different()
return res