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

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

实践环境

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']

效果:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
9月前
|
前端开发 数据库
通过ajax调用数据字典数据动态添加到网页下拉列表
通过ajax调用数据字典数据动态添加到网页下拉列表
|
10月前
|
UED 开发者
构建可访问的自定义表单控件
在现代Web应用程序中,表单是一个至关重要的组件。用户可以通过表单输入数据并与应用程序进行交互。为了提高用户体验,并让所有用户都能轻松地使用您的应用程序,构建可访问的自定义表单控件是非常重要的。
|
11月前
|
监控 测试技术 API
【更新】Eolink Apikit 10.9.0 版本:接口测试支持通过 URL 请求大型文件,支持左右视图和全屏视图
本次更新后,会把 API 管理、自动化测试、API 监控中的环境和自定义函数数据进行合并统一管理。 1) 环境合并:各应用级环境合并成空间级环境后,直接罗列在空间级环境列表中,不进行去重,故可能会有重名环境需要大家按需处理。 2) 自定义函数合并:各应用自定义函数合并成空间级自定义函数后,在空间级自定义函数分组中会增加三个一级分组“API 管理函数”、“自动化测试函数”、“API 监控函数”,各应用自定义函数会置于对应的应用分组下,并且进行同名去重,保留最新编辑过的自定义函数。
88 0
【更新】Eolink Apikit 10.9.0 版本:接口测试支持通过 URL 请求大型文件,支持左右视图和全屏视图
|
XML JavaScript 前端开发
odoo 给form表单视图内联列表添加按钮
odoo 给form表单视图内联列表添加按钮
145 0
|
JavaScript 前端开发
Odoo 自定义form表单按钮点击事件处理程序
Odoo 自定义form表单按钮点击事件处理程序
231 0
Revit 二次开发—通过视图名激活对应视图
Revit 二次开发—通过视图名激活对应视图
|
存储 SQL 前端开发
Django Blog | 10 自定义Form,美化页面并实现文章编辑功能
Django Blog | 10 自定义Form,美化页面并实现文章编辑功能
384 0
Django Blog | 10 自定义Form,美化页面并实现文章编辑功能
SwiftUI—如何激活表单以及如何使表单失效
SwiftUI—如何激活表单以及如何使表单失效
133 0
SwiftUI—如何激活表单以及如何使表单失效
|
存储 XML 算法
工作流Activiti框架中表单的使用!详细解析内置表单和外置表单的渲染
本文介绍了工作流Activiti框架中表单的使用。在工作流Activiti框架中,支持在业务流程中添加内置表单和外置表单。详细说明了工作流中的表单需要具备的属性以及表单属性在工作流中的映射关系。最后介绍了工作流Activiti框架中对支持的表单的渲染方式。通过这篇文章,可以帮助我们在工作流Activiti框架中更加熟练地运用表单。
1615 0
工作流Activiti框架中表单的使用!详细解析内置表单和外置表单的渲染
|
XML 数据格式
如何在UI5视图里包含原生的HTML视图
如何在UI5视图里包含原生的HTML视图
如何在UI5视图里包含原生的HTML视图