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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...