odoo开发笔记--字段追踪,消息通知机制
odoo有着强大的消息记录、通知机制;
实际开发中,常常会有客户的需求,页面上form视图中的某些字段不允许反复修改,
假如有的用户修改了,恶意搞坏,往往容易给公司利益造成损失,或破坏,那么如何有效的记录相关用户的操作,
提供一定的安全审计功能?
别担心,odoo已经为我们考虑到了!!!
下面我们就来介绍下,
首先,先保证整体基本的消息记录功能,两个地方需要修改,模型和form视图
在你需要消息记录的模型申明中,添加如下红色部分代码:
class TestModle(models.Model): """ 模型名称 """ _name = 'test.test_model' # 定义 模型名(类名) 必写 _rec_name = 'name' # 定义 模型引用时 显示的默认字段 非必写 _description = 'test model' # 定义数据库中的表名 非必写 _inherit = ['mail.thread', 'ir.needaction_mixin'] # 集成消息模型 增加消息记录通知功能
在相应的form视图内部下方,增加如下红色代码:
<form> .... 省略一串代码 .... <div class="oe_chatter"> <field name="message_follower_ids" widget="mail_followers"/> <field name="message_ids" widget="mail_thread"/> </div> </form>
然后在想要追踪的字段的模型定义中增加如下属性:
class TestModle(models.Model): """ 模型名称 """ _name = 'test.test_model' # 定义 模型名(类名) 必写 _rec_name = 'name' # 定义 模型引用时 显示的默认字段 非必写 _description = 'test model' # 定义数据库中的表名 非必写 _inherit = ['mail.thread', 'ir.needaction_mixin'] # 集成消息模型 增加消息记录通知功能 name = fields.Char(string="Name",) inout = fields.Selection(string="InOut", selection=[('I', u'进口'), ('E', u'出口'), ], track_visibility='always',) contract_no = fields.Char(string="Contract No", track_visibility='onchange',)
上面的两种写法:track_visibility='always' 和 track_visibility='onchange'
修改完成之后,重启odoo服务,升级相应模块!对上述字段进行手动修改,保存的时候,验证效果!!!
实现效果:
感兴趣的小伙伴,可以参考:
https://www.jianshu.com/p/84c6518d7dbf