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

Odoo给One2Many字段加domain限制同公司记录 解决self未定义报错

报错原因

你在类层面定义模型字段时,实例对象self还没有被初始化,直接在domain列表中引用self会触发未定义错误。

解决方法

方法1:字段定义中使用lambda动态生成domain

将domain参数改为匿名函数,Odoo会在需要读取domain规则时才执行该函数,此时已经有实例化的self对象可以调用:

line_ids = fields.One2many(
    "hr.payslip.line",
    "slip_id",
    string="Payslip Lines",
    readonly=True,
    domain=lambda self: [("company_id", "=", self.company_id.id)]
)

注意:使用该方法需要确保当前模型已定义company_id字段

方法2:视图层添加domain规则

也可以不在模型层定义domain,直接在对应表单视图的字段标签上添加规则,视图会自动读取当前记录的company_id值匹配关联数据:

<field name="line_ids" domain="[('company_id', '=', company_id)]"/>

内容的提问来源于stack exchange,提问作者Houssem Chouia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:06