问题描述
我有一个称为 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 条件
- 第一种方法(我将此文件添加到了清单中的数据中)
<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 '<xpath expr="//t[@t-if='categories']">' cannot be located in parent view
- 第二种方法(我在清单的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,而是theme.ir.ui.view >.该代码将使用错误的 ID 进行查找,因为它期望一个常规视图 - 要么找到错误的常规视图,要么什么也没找到。
不幸的是,我没有找到任何修改 theme.ir.ui.view 的解决方案 - 如果有人有解决方案,我将非常感谢她/他与我们分享。
似乎修改主题的唯一方法是编辑原始 xml 文件。
更新:
我尝试使用不同的方法,例如继承表单视图 (