odoo中one2many子表按条件隐藏行

24 篇文章 0 订阅
23 篇文章 1 订阅
本文探讨了在Odoo等系统中如何在one2many关联中高效筛选数据,尝试了不同方法如XML视图domain限制和后端model定义,最终提出通过扩展JS渲染和后端定义domain来解决问题。特别提到了domain的正确语法调整和注意事项。
摘要由CSDN通过智能技术生成

今天遇到一个需求,需要按条件筛选one2many子表的数据显示。

说一下解决思路:

刚开始想在xml视图中的one2many字段上直接写domain过滤,发现不生效。然后想着在字段上传context上下文,重写read方法,发现也行不通,因为字段上定义的上下文无法传递到后端的方法中,导致接收到的上下文中没有我们需要的特殊标记。所以重写read这种方式暂时被放弃。由于不太想去扩展o2m字段的js,就想看看还有没有其他偷懒的办法~

解决办法:

1. 扩展one2many渲染的js,在js中过滤数据(没有去实现这个方法,就不做展示了,但是理论上是可行的)

2. 在后端模型的one2many字段,定义domain

字段名 = fields.One2many('模型名', '字段名',domain=[('type', '!=', 'related')])

细心的朋友可能会发现这里的domain有一点不太一样,正常py文件的字段中定义domain需要用一个字符串包裹起来,我最开始也是用字符串包裹起来的,但是升级会报错说不能list和str相加,所以这里需要注意,domain是一个列表,而不是一个字符串形式的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值