實踐環境 Odoo 14.0-20221212 (Community Edition) 需求描述 如圖,給表單新增一個類似聊天的視窗,當記錄一些表單活動(本例為自動記錄當前記錄狀態變化) 需求實現 模型定義 odoo14\custom\estate\models\estate_property.py ...
實踐環境
Odoo 14.0-20221212 (Community Edition)
需求描述
如圖,給表單新增一個類似聊天的視窗,當記錄一些表單活動(本例為自動記錄當前記錄狀態變化)
需求實現
模型定義
odoo14\custom\estate\models\estate_property.py
需要繼承mail.thread
模型,併為需要追蹤的欄位設置tracking
屬性,並設置屬性值為真值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class EstateProperty(models.Model):
_name = 'estate.property'
_description = 'estate property table'
_inherit = ['mail.thread'] # 必須繼承該模型
name = fields.Char(required=True)
state = fields.Selection(
string='State',
selection=[('new','New'),
('offerReceived','Offer Received'),
('offerAccepted', 'Offer Accepted'),
('sold','Sold'),
('canceled', 'Canceled')],
copy=False,
tracking=1 # 該屬性不能少,且必須為真值
)
# ...此處代碼略
說明:
-
mail.thread
模型,該模型類型為models.AbstractModel
,其定義文件為odoo14\odoo\addons\mail\models\mail_thread.py
,其欄位命名均以message_
開頭 -
tracking
該屬性為True
或數字時,打開針對該屬性所屬欄位的修改日誌--當所屬欄位內容發生變化時,系統會將該欄位變化前後的值寫入日誌中,這個數字的大小影響變更日誌在日誌中的排序。
__manifest__.py
配置
odoo14\custom\estate\__manifest__.py
需要配置mail
模塊依賴,因為mail.thread
模型歸屬該模塊
#!/usr/bin/env python
# -*- coding:utf-8 -*-
{
'name': 'estate',
'depends': ['base', 'mail'],
# 此處代碼略...
}
視圖定義
添加<div class="oe_chatter">
元素,內容如下
<?xml version="1.0"?>
<odoo>
<!--此處代碼略-->
<record id="estate_property_view_form" model="ir.ui.view">
<field name="name">estate.property.form</field>
<field name="model">estate.property</field>
<field name="arch" type="xml">
<form string="estate property form">
<!--此處代碼略-->
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
</odoo>
如果希望在視窗中展示添加更多功能,可以添加欄位,如下
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids" widget="mail_activity"/>-->
<field name="message_ids"/>
</div>
說明:activity_ids
來自mail.activity.mixin
模型,類型為models.AbstractModel
,定義在文件 odoo14\odoo\addons\mail\models\mail_activity.py
,其欄位命名均以activity_
,對應的,模型定義中_inherit
屬性也需要添加該模塊,如下:
_inherity= ['mail.thread', 'mail.activity.mixin']
效果:
作者:授客
微信/QQ:1033553122
全國軟體測試QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限於時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞後如有任何疑問,請聯繫我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群