今天有群里的小伙伴咨询,一个字段是Selection类型,可能会有多个可选择的项目,但在某个界面中,不想用户选择全部可选项,只希望在某几个选项中选择。如果是Many2one字段,我们可以根据domain来过滤可选项,但Selection目前没有这个过滤功能,所以我自己加了一个js模块,来实现此需求。
首先我们来看一个字段的定义是这样子的:
lab_kind = fields.Selection([("ddtn",u"自检"),("rd",u"研发"),("external",u"外送")],string=u"检测方式",default="ddtn")
正常来看,用户是可以选择三个项目的任意一个,我在xml定义中加了一个属性值,如下:
<field name="lab_kind" required="1" opt_disable="rd,ddtn"/>
增加的opt_disabled是用来指定用户界面上哪几个项目不允许选择,多个项目值可以用逗号分隔。
打开操作界面,用户在编辑或新增时,看到的效果如下图:

前面两个选项会进行disabled,可以看到,但不可以选择。本来开始是想把不可选的项目过滤掉不显示,但考虑到有些字段的default值,或旧数据的值可能会是被过滤的值,如果不显示出来,可能会有错误,所以最终的效果改为不影响旧的记录,但新的资料不可以选择这样的效果。
模块下载地址为:https://download.youkuaiyun.com/download/vnsoft/10755608
本文介绍如何在Odoo中自定义Selection字段,通过在XML定义中添加opt_disable属性,实现在用户界面中禁用特定选项的功能。该方法适用于需要限制用户选择范围的场景,同时确保旧数据的完整性。
704

被折叠的 条评论
为什么被折叠?



