Odoo16继承问题:无法在Helpdesk工单表单视图添加按钮
Odoo 16 Helpdesk工单表单头部添加按钮报错“Field
stage_id does not exist”的解决办法 问题场景
为给Odoo 16的Helpdesk工单表单视图头部添加按钮,我创建了专用模块,模块包含models、security、views等标准目录:
- 视图文件中继承了
helpdesk.helpdesk_ticket_view_form表单视图 - 模型代码中使用
__inherit = 'helpdesk.ticket'并指定_name = 'helpdesk.ticket.custo'
更新模块时触发错误:Field 'stage_id' does not exist
错误原因
在Odoo的模型继承机制中:
- 使用
__inherit并指定_name属于表继承(Table Inheritance),会创建一个全新的模型和数据库表,原模型的字段不会自动同步到新模型中 - 但视图继承的是原
helpdesk.ticket模型的表单视图,视图中引用的stage_id等字段在新创建的helpdesk.ticket.custo模型中不存在,因此触发字段不存在的错误
解决步骤
修改模型代码,使用**单表继承(Single Table Inheritance)**的方式扩展原模型:
- 仅保留
_inherit = 'helpdesk.ticket',不要指定_name属性 - 重新更新模块
这样修改后,模块会直接在原helpdesk.ticket模型上做扩展,原模型的所有字段都会保留,视图继承也能正常生效,即可成功在工单表单头部添加自定义按钮。
内容的提问来源于stack exchange,提问作者free94
相关产品推荐
相关产品推荐

