翼度科技»论坛 编程开发 python 查看内容

odoo 为form表单视图添加chatter功能

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
实践环境

Odoo 14.0-20221212 (Community Edition)
需求描述

如图,给表单新增一个类似聊天的窗口,当记录一些表单活动(本例为自动记录当前记录状态变化)

需求实现

模型定义

odoo14\custom\estate\models\estate_property.py
需要继承mail.thread模型,并为需要追踪的字段设置tracking属性,并设置属性值为真值
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from odoo import models, fields, api
  4. class EstateProperty(models.Model):
  5.     _name = 'estate.property'
  6.     _description = 'estate property table'
  7.    
  8.     _inherit = ['mail.thread'] # 必须继承该模型
  9.     name = fields.Char(required=True)   
  10.     state = fields.Selection(
  11.         string='State',
  12.         selection=[('new','New'),
  13.                    ('offerReceived','Offer Received'),
  14.                    ('offerAccepted', 'Offer Accepted'),
  15.                    ('sold','Sold'),
  16.                    ('canceled', 'Canceled')],
  17.         copy=False,
  18.         tracking=1 # 该属性不能少,且必须为真值
  19.     )
  20.     # ...此处代码略
复制代码
说明:


  • 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模型归属该模块
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. {
  4.     'name': 'estate',
  5.     'depends': ['base', 'mail'],
  6.      # 此处代码略...
  7. }
复制代码
视图定义

添加元素,内容如下
  1. <?xml version="1.0"?>
  2. <odoo>   
  3.      
  4.     <record id="estate_property_view_form" model="ir.ui.view">
  5.         <field name="name">estate.property.form</field>
  6.         <field name="model">estate.property</field>
  7.         <field name="arch" type="xml">
  8.             <form string="estate property form">
  9.                  
  10.                
  11.                      <field name="message_follower_ids"/>
  12.                      <field name="message_ids"/>
  13.                
  14.             </form>
  15.         </field>
  16.     </record>     
  17. </odoo>
复制代码
如果希望在窗口中展示添加更多功能,可以添加字段,如下
  1.      <field name="message_follower_ids"/>
  2.      <field name="activity_ids" widget="mail_activity"/>-->
  3.      <field name="message_ids"/>
复制代码
说明:activity_ids 来自mail.activity.mixin模型,类型为models.AbstractModel,定义在文件 odoo14\odoo\addons\mail\models\mail_activity.py,其字段命名均以activity_,对应的,模型定义中_inherit 属性也需要添加该模块,如下:
  1. _inherity= ['mail.thread', 'mail.activity.mixin']
复制代码
效果:


来源:https://www.cnblogs.com/shouke/p/17135853.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具