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

Odoo继承hr.employee模型异常,审批人子模型保存数据异常求助

解决Odoo中One2many子记录自动覆盖关联字段的问题

看起来你遇到的是Odoo中One2many字段的默认行为导致的问题,我来帮你分析并解决:

问题根源

在Odoo中,当你定义one2many字段时,它会自动维护对应的many2one反向关联字段(也就是你代码里的employee_id),将其强制设置为当前打开的父记录(也就是你正在编辑的员工)。这是Odoo的默认关联机制,目的是确保子记录和父记录的关联关系正确,但这和你的需求冲突了——你希望手动选择employee_id为其他员工,而非被自动覆盖为当前员工。

解决方案:调整模型与视图结构

我们需要把反向关联字段和你要手动选择的员工字段拆分开,避免Odoo的自动填充影响你的选择:

1. 修正Python模型代码

修改hr_employee.py,重新定义模型字段,分离关联逻辑:

from odoo import fields, models, api, _

class Employees(models.Model):
    _inherit = 'hr.employee'
    # 将One2many的反向关联指向新的parent_employee_id字段
    approvers = fields.One2many('hr.employee.approvers', 'parent_employee_id', string='Approvers')

class EmployeeApprovers(models.Model):
    _name = 'hr.employee.approvers'
    _description = 'Employee Approvers'

    # 这个字段由Odoo自动填充,关联当前编辑的员工(父记录)
    parent_employee_id = fields.Many2one('hr.employee', string='Employee', required=True, ondelete='cascade')
    # 这个字段用来手动选择要分配的审批人(其他员工)
    approver_id = fields.Many2one('hr.employee', string='Approver', required=True)
    lower_limit = fields.Integer('Lower limit')
    upper_limit = fields.Integer('Upper limit')

2. 更新XML视图

对应调整视图,把原来的employee_id替换为新的approver_id字段:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_hr_employee_form_inherit" model="ir.ui.view">
<field name="name">hr.employee.form.inherit</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='public']" position="inside">
<group string="Aprobadores">
<field name="approvers">
<tree string="Aprobadores" editable="bottom">
<!-- 替换为手动选择审批人的字段 -->
<field name="approver_id"/>
<field name="lower_limit"/>
<field name="upper_limit"/>
</tree>
</field>
</group>
</xpath>
</field>
</record>
</data>
</odoo>

3. 效果验证

现在重新升级模块后:

  • 打开任意员工表单添加审批人时,parent_employee_id会自动关联当前员工(确保层级关系正确)
  • 你可以自由选择approver_id为其他员工,保存后该值不会被覆盖
  • 上下限字段也能正常保存生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:43:12