You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo计算型Selection字段报无选项断言错误问题问询

错误产生原因
  • Odoo的fields.Selection类型字段强制要求传入selection参数定义可选值列表,哪怕是计算字段也不例外。你在Member模型中定义的kin_relation_with_member字段仅指定了compute属性,未提供selection可选值列表,Odoo初始化字段时触发了断言校验失败。
  • 附加逻辑问题:当前的compute方法写法不符合Odoo规范,未遍历当前记录集self,也未添加依赖装饰器,会导致后续多记录操作、字段自动更新触发异常。
  • 取值问题:原代码中赋值的'Null'如果没有预先加入selection可选值列表,后续也会触发取值不合法的报错。
解决方法
  1. 给Selection字段补充可选值列表,推荐直接复用Kin模型的配置避免重复定义,示例代码如下:
# Member模型新增方法,复用Kin模型的亲属关系选项
def _get_kin_relation_selection(self):
    # 将下方的your.kin.model.name替换为你Kin模型的实际模型名
    return self.env['your.kin.model.name']._fields['relation_with_member'].selection

# 修正后的字段定义
kin_relation_with_member = fields.Selection(
    selection='_get_kin_relation_selection',
    compute='_is_kin_relation',
    string="Kin Relation"
)

如果不想复用,也可以直接把Kin模型中selection的列表复制到该字段的selection参数中。

  1. 修正compute方法的逻辑,添加依赖装饰器保证字段自动更新:
@api.depends('kin_line_ids.is_kin', 'kin_line_ids.relation_with_member')
def _is_kin_relation(self):
    for record in self:
        relation = False
        for kin in record.kin_line_ids:
            if kin.is_kin:
                relation = kin.relation_with_member
                break
        record.kin_relation_with_member = relation

内容的提问来源于stack exchange,提问作者Fawad 4bros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:57:03