Odoo15继承res.config.settings视图添加自定义字段不显示如何解决
问题背景
我在尝试继承account模块的res.config.settings视图添加自定义字段,代码部署后系统无任何错误或警告提示,但新增内容在会计设置板块及其他位置均不显示。同文件后续编写的、绑定新菜单项和动作的独立设置板块功能运行正常。
使用的XML代码如下:
<record id="res_config_settings_view_form" model="ir.ui.view"> <field name="name">res.config.settings.view.form.commission.journal</field> <field name="model">res.config.settings</field> <field name="inherit_id" ref="account.res_config_settings_view_form" /> <field name="arch" type="xml"> <!-- <xpath expr="//div[hasclass('settings')]" position="inside"> --> <!-- <div class="app_settings_block" data-string="Invoicing" string="Invoicing" data-key="account" groups="account.group_account_manager"> --> <div data-key="account" position="inside"> <h2>Wallet Journal Settings</h2> <!-- <div class="row mt16 o_settings_container" id="o_res_settings"> --> <div class="row mt16 o_settings_container" id="default_journal_and_coa_config" name="default_journal_and_coa_config"> <div class="col-12 col-lg-6 o_setting_box" id="default_journal_coa"> <div class="o_setting_right_pane"> <div> <div class="text-muted"> Wallet Journal </div> <div class="content-group mt16"> <field name="wallet_journal_id" colspan="4"/> </div> <div class="text-muted"> Franchise Commssion </div> <div class="content-group mt16"> <field name="commision_account_id" colspan="4"/> </div> <div class="text-muted"> Expense to Bofast </div> <div class="content-group mt16"> <field name="bofast_expense_account_id" colspan="4"/> </div> </div> </div> </div> </div> </div> </field> </record>
排查解决步骤
按优先级从高到低逐一验证:
- 优先排查视图ID冲突:你当前继承视图的
id填的是res_config_settings_view_form,和account模块原生的根视图ID完全重名。Odoo加载模块时同模型下如果出现重复ID的视图,后加载的自定义视图会直接覆盖原生视图定义,不会按你写的inherit_id执行继承扩展,这是无报错但内容不显示的最高频原因。把record的id改成自定义唯一值,比如res_config_settings_view_form_commission_journal,升级模块后再验证效果。 - 修正XPath定位规则:你现在直接用
<div data-key="account" position="inside">做节点定位,不同Odoo版本中,设置页带data-key="account"属性的节点可能嵌套在多层带app_settings_block类的容器内,部分版本还会对设置页节点做权限过滤,直接匹配属性很容易命中不到目标节点。推荐替换为明确的xpath表达式定位,参考写法:<xpath expr="//div[hasclass('app_settings_block') and @data-key='account']" position="inside"> <!-- 此处放你要新增的设置区块内容 --> </xpath> - 校验字段定义与访问权限:确认你在Python层的
res.config.settings模型中正确定义了wallet_journal_id、commision_account_id、bofast_expense_account_id三个字段,字段没有附加额外的权限组限制,且当前登录用户属于account.group_account_manager用户组——会计设置板块默认仅对该组用户可见。 - 确认模块依赖配置:打开自定义模块的
__manifest__.py文件,检查depends列表是否明确添加了account依赖,避免自定义模块加载顺序早于account模块,导致继承执行时找不到父视图。 - 检查视图实际加载状态:开启开发者模式后,进入「设置-技术-用户界面-视图」菜单,搜索你自定义的视图名称,确认视图处于已加载状态,没有被其他模块针对同一父视图的继承规则覆盖。
内容的提问来源于stack exchange,提问作者KbiR
相关产品推荐
相关产品推荐

