Odoo丨如何在明细行中添加复选框?
创始人
2024-03-22 14:01:21
0

最近,在项目实际业务中遇到需要对明细订单添加复选框和按钮进行操作的需求。

起初在拿到需求时,我联想到Odoo默认tree视图是有复选框和操作按钮的功能,于是查看了源码,确认了这个想法。

因为这个是属于字段中one2many 关系属性来渲染出来的视图,和单纯的tree不完全相同。于是就开始了新的调研,然后有了以下问题。

本期就跟大家来探讨一下,如何在Odoo的明细行中添加复选框。

三问三解  轻松实现需求 

#  问题一 

原生tree有各种属性控制是否创建、删除、编辑、颜色显示等,那one2many中tree视图是否也可以?

答案是可以的。

经过研究发现,其实one2many中明细行视图渲染和原生tree视图渲染默认使用的是同一个ListRenderer,那么只需对one2many页面渲染时更改部分属性就可以了。

于是,重写one2many widget ,如下图,在相应位置添加hasSelectors属性(自定义名称,任意名字,最好不和原生冲突)。

完成后,重新启动环境,并升级,惊喜发现,复选框出现了。

此时,第二个问题出现了。

#  问题二 

选中复选框,并没有像tree视图一样出现操作按钮,怎么办呢?

仔细看了web.relational_fields 中

FieldOne2Many widget 发现其实原生中就有对看板视图按钮的添加。

就这样,在自定义的 widget 添加相关代码和qweb页面,和看板视图一样,按钮编辑页面可见了。

完成以上操作,再次重启项目,基本已经成功了。

结果和我们设想的一样,按钮仅编辑页面就可操作,且执行成功了。

不过细心的小伙伴已经发现了,复选框只读页面也同步显示了,能不能去掉呢?

#  问题三 

是否可以将只读页面中的复选框隐藏呢?

答案肯定是可以的,这个在 ListRenderer 中,有个函数 _renderSelector 专门用来渲染复选框,通过在这个函数中做出修改,就可以达到这个效果。

最后效果如下 ⬇

通过上述的操作,我们逐步实现了在Odoo明细行中添加了复选框与按钮的最终需求。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...