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