Odoo继承招聘模块后XML记录数据无法更新求助
问题描述
我继承了Odoo的Recruitment模块,尝试通过XML完成两项操作:
- 将系统自带的
hr_recruitment.stage_job1至stage_job5这几个招聘阶段的active字段设为0(归档) - 修改
hr_recruitment.group_hr_recruitment_user用户组的配置
但所有操作均未生效,预期的归档效果没有实现。相关代码如下:
XML数据文件(hr_recruitment_data.xml)
<?xml version='1.0' encoding='utf-8'?> <odoo> <data noupdate="0"> <record id="hr_recruitment.stage_job1" model="hr.recruitment.stage"> <field name="active">0</field> </record> <record id="hr_recruitment.stage_job2" model="hr.recruitment.stage"> <field name="active">0</field> </record> <record id="hr_recruitment.stage_job3" model="hr.recruitment.stage"> <field name="active">0</field> </record> <record id="hr_recruitment.stage_job4" model="hr.recruitment.stage"> <field name="active">0</field> </record> <record id="hr_recruitment.stage_job5" model="hr.recruitment.stage"> <field name="active">0</field> </record> </data> </odoo>
Python继承代码
from odoo import models, fields, api, _ class hrRecruitmentStageInherit(models.Model): _inherit = "hr.recruitment.stage" group_ids = fields.Many2many('res.groups') stage_type = fields.Selection( selection=[ ('initiation', 'Initiation'), ('interview', 'Interview'), ('selection_process', 'Selection Process'), ('documentation', 'Documentation'), ('audit', 'Audit'), ('accounts_finance', 'Accounts / finance'), ('background_checks', 'Background Checks') ], string='Stage Type' ) active = fields.Boolean(default=True)
模块manifest配置
{ 'name': "HR CBT Recruitment ", 'sequence': 10, 'depends': [ 'base', 'hr_recruitment', 'hr_recruitment_survey', 'website_hr_recruitment', 'hr_recruitment_sign', ], 'data': [ 'security/ir.model.access.csv', 'security/security_view.xml', 'views/hr_recruitment_stage_inherit.xml', 'data/hr_recruitment_data.xml', # Where the records are ], }
排查与解决方案
1. 移除不必要的字段重定义
在Python继承类中,你重新定义了active字段:
active = fields.Boolean(default=True)
原hr.recruitment.stage模型已经自带active字段,且默认值就是True,重复定义会干扰Odoo对原字段的XML更新逻辑。删除这行代码,保留继承的原字段即可。
2. 补充用户组修改的XML代码
你提到要修改hr_recruitment.group_hr_recruitment_user组,但当前XML中没有对应代码,需补充类似以下内容(根据实际需求修改字段):
<record id="hr_recruitment.group_hr_recruitment_user" model="res.groups"> <!-- 示例:修改组名称 --> <field name="name">自定义招聘用户组</field> <!-- 可添加其他需要修改的字段,如权限、关联菜单等 --> </record>
3. 确保模块升级时正确加载数据
- 修改代码后,必须升级模块(而非仅安装),升级时勾选「加载数据」选项;
- 开发环境可通过命令行强制升级:
odoo-bin -d 你的数据库名 -u HR_CBT_Recruitment - 查看Odoo日志,确认数据更新过程中没有报错。
4. 验证noupdate属性与加载顺序
- 你的XML已经设置
noupdate="0",确保了数据可以被更新,这部分是正确的; - manifest中
depends已包含hr_recruitment,sequence=10也保证模块在基础招聘模块之后加载,无需调整。
内容的提问来源于stack exchange,提问作者Paul Nnamdi
相关产品推荐
相关产品推荐

