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明细行中添加了复选框与按钮的最终需求。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...