无法继承Odoo主题模板

Can't Inherit Odoo theme template

我有一个名为 theme_test 的基本主题 这是模板代码(此模板已添加到清单数据中)。

<template id="product_catg_test" name="Product Category">
    <t t-if="categories">
        <code for print category>
    </t>
</template>

所以我创建了一个名为 test_theme_extended 的扩展模块,并尝试了两种继承方法来替换 t-if 条件

  1. 第一种方法(我在清单的数据中添加了这个文件)
<template id="product_catg_test_extended" inherit_id="theme_test.product_catg_test" name="Test">
    <xpath expr="//t[@t-if='categories']" position="replace"></xpath>
</template>

第一种方法出错

odoo.tools.convert.ParseError: "Element '' cannot be located in parent view

  1. 第二种方法(我在清单中的 QWEB 中添加了这个文件)
<t t-extend="theme_test.product_catg_test">
    <t t-jquery="t[t-if='categories']" t-operation="replace"/>
</t>

这也不起作用。

我认为主视图是从主题创建的,它没有外部 ID,这就是我遇到这个问题的原因。但是如何继承扩展模块中的基础主题视图呢?

目前我正在为完全相同的问题而苦苦挣扎。到目前为止,在调试负责查找的代码时,我想知道为什么父视图的内容与 xml 显示的内容不同。

长话短说:主题模块中的模板不是存储为ir.ui.view而是主题。ir.ui.view。该代码将使用错误的 ID 进行查找,因为它需要常规视图 - 要么找到错误的常规视图,要么一无所获。

不幸的是,我没有找到任何修改主题的解决方案。ir.ui.view - 如果有人有解决方案,我将不胜感激 she/he 与我们分享。

似乎修改主题的唯一方法是编辑原始 xml 个文件。

更新:

我尝试使用不同的方法,例如继承表单视图 (

如果您要继承一个主题,它必须来自另一个主题,或者使用记录而不是模板。

定义主题,如主题前缀和主题类别

由于模块主题在主题 ir_ui_view 中创建视图并在 ir_ui_view

中创建没有 XMLID 的副本

并且普通模块在 ir_ui_view

中创建视图

因此,如果您想从普通模块 (ir_ui_view) 修改视图主题 (theme_ir_ui_view),那么实际上它不会找到该元素,因为它在另一个 table

但是如果你还想尝试你可以这样继承,继承没有XML的副本所以你必须通过key来继承

<record id="product_catg_test_extended" model="ir.ui.view">
    <field name="name">product_catg_test_extended</field>
    <field name="inherit_id" search="[('key', '=', 'theme_test.product_catg_test')]"/>
    <field name="type">qweb</field>
    <field name="key">test_theme_extended.product_catg_test_extended</field>
    <field name="arch" type="xml">
        <xpath expr="//t[@t-if='categories']" position="replace"></xpath>
    </field>
</record>