odoo17 警示: selection attribute will be ignored as the field is related

在 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 字段继承,无需重复定义

正确修改方式

直接移除无效的选择列表参数,保留 relatedstring(如需设置字段标签):

复制代码
wtd_fuwlx = fields.Selection(related='wtd_id.fuwlx',string='服务类型' ,  store=True)

关键说明:

  1. related 字段自动继承属性

    关联字段会从源字段(wtd_id.fuwlx)继承 selection 列表、字段类型等属性,无需重复声明。

  2. 添加 string 参数(可选)

    如果你想在界面上自定义字段显示标签(默认使用源字段的标签),添加 string='服务类型'

  3. store=True 的作用

    这会使字段值存储到数据库中(默认 related 字段不存储),只有确实需要时才保留(例如用于搜索/分组)。

  4. 修改后重新升级模块,警告消失。

  5. 注意 :如果不需要自定义标签,可省略 string 参数。字段行为将完全与源字段 wtd_id.fuwlx 保持一致。