_register_hook方法是在odoo启动,加载模块时调用,可以在调用期间对某个的模型进行功能增强,比如增加日志
下面是一个简单的示例:
class Log(models.Model):
_name = "cn.com.brandmax.log"
_description = "日志"
def _make_read(self):
def read(self, fields=None, load="_classic_read", **kwargs):
result = read.origin(self, fields, load, **kwargs)
return result
return read
def _register_hook(self):
ccb_product = self.env['cn.com.brandmax.product']
ccb_product._patch_method('read', self._make_read())
代码调用如下,结果显示为:执行的测试方法
def action_read(self):
log = self.env['cn.com.brandmax.log']
log.read()
增加_patch_method没有增加_patch_method的运行轨迹:
点击read进入的是models的read方法
read进入的是下面模型
注意这句代码
result = read.origin(self, fields, load, **kwargs)
重点:orgin将进入绑定之前模型的read方法
之前完原模型的read方法以后,再继续执行增强模型的方法