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
相关产品推荐
相关产品推荐

