在 Odoo 17 中,当使用 related
字段时,直接在 fields.Selection
中指定选择列表会被忽略(因为选择项会从关联字段继承)。
wtd_fuwlx = fields.Selection('服务类型' , related='wtd_id.fuwlx', store=True)
遇到了一个警告,提示在Odoo 17中,由于字段是关联字段(related field),所以selection属性将被忽略。 在Odoo中,当我们使用`related`属性时,该字段会继承其所关联字段的所有属性(包括selection列表)。因此,在定义关联字段时,我们不需要(也不应该)重复指定`selection`属性,因为它会被忽略。
-
'服务类型'
作为Selection
的第一个参数是无效的(它应该是[(value, label)]
列表或可调用方法) -
由于使用了
related
,选择项会自动从wtd_id.fuwlx
字段继承,无需重复定义
正确修改方式
直接移除无效的选择列表参数,保留 related
和 string
(如需设置字段标签):
wtd_fuwlx = fields.Selection(related='wtd_id.fuwlx',string='服务类型' , store=True)
关键说明:
-
related
字段自动继承属性关联字段会从源字段(
wtd_id.fuwlx
)继承selection
列表、字段类型等属性,无需重复声明。 -
添加
string
参数(可选)如果你想在界面上自定义字段显示标签(默认使用源字段的标签),添加
string='服务类型'
。 -
store=True
的作用这会使字段值存储到数据库中(默认
related
字段不存储),只有确实需要时才保留(例如用于搜索/分组)。 -
修改后重新升级模块,警告消失。
-
注意 :如果不需要自定义标签,可省略
string
参数。字段行为将完全与源字段wtd_id.fuwlx
保持一致。