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视图内部下方,增加如下红色代码:

....

省略一串代码

....

widget="mail_followers"/>

然后在想要追踪的字段的模型定义中增加如下属性:

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

 

查看原文