odoo中的勾子(hook)函数

定义

有时,业务用例非常复杂,无法通过使用数据文件来进行解决。这些情况下,可以在声明文件中使用init钩子来执行所需要的操作。

使用方法

按照如下步骤来添加post_init_hook:

在__manifest__.py文件中通过post_init_hook键来注册这个钩子:

...
'post_init_hook': 'add_book_hook',
...

如图:
在这里插入图片描述

在__init__.py文件中添加add_book_hook()方法:

def add_book_hook(cr, registry):
  env = api.Environment(cr, SUPERUSER_ID, {})
  book_data1 = {'name': 'Book 1', 'date_release': fields.Date.today()}
  book_data2 = {'name': 'Book 2', 'date_release': fields.Date.today()}
  env['library.book'].create([book_data1, book_data2])

运行原理…

在第1步中,我们在声明文件文件中通过add_book_hook值注册了post_init_hook。这表示在模块安装之后,Odoo会在__init__.py中查找add_book_hook方法。如果找到,它会使用数据库游标和 registry调用该方法。

第2步中,我们声明了add_book_hook()方法,在模块安装后会被调用。我们通过该方法创建了两条记录。在实际情况中,可以在本息编写复杂的业务逻辑。

本例中,我们学习了post_init_hook,但Odoo还支持另外两种钩子:

pre_init_hook:这个钩子会在开始安装模块时触发。它与post_init_hook正好相反,会在当前模块安装前触发。
uninstall_hook:这个钩子会在你卸载该模块时触发。它多用于模块需要垃圾回收机制时。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值