继承POS模块模板标签添加自定义字段时触发内部服务器错误求指导
排查Odoo POS OrderWidget模板继承报错并添加自定义内容
嘿,我来帮你搞定这个问题!你触发内部服务器错误主要是因为模板继承的几个关键细节写错了,咱们一步步梳理修正:
错误原因分析
- inherit_id 配置错误:你写的
inherit_id="point_of_sale.template"完全不对,原模板的t-name是OrderWidget,正确的继承ID应该是point_of_sale.OrderWidget - XPath 路径错误:原模板里根本没有
<form>标签,你写的//form/t/div/div/div/div/div/div/[@class='subentry']完全不符合原模板的结构,而且语法上多了个斜杠(/[@class='subentry']应该改成[@class='subentry'])
正确的继承代码
把你自定义模块gst_view.xml里的代码替换成下面这段:
<templates id="template" xml:space="preserve"> <template id="custom_order_widget_extension" inherit_id="point_of_sale.OrderWidget"> <!-- 定位到Taxes所在的subentry元素,在它后面插入自定义内容 --> <xpath expr="//div[@class='subentry']" position="after"> <!-- 这里用和原模板一致的subentry类,保证样式统一 --> <div class='subentry'> <span class="label">GST: </span> <span class="value">0.00 €</span> </div> <!-- 也可以添加其他自定义内容,比如你原来写的h1 --> <!-- <h1>FOO 2</h1> --> </xpath> </template> </templates>
额外注意事项
- 模块依赖配置:确保你的自定义模块的
__manifest__.py里的depends列表包含point_of_sale,这样Odoo才会正确加载继承关系:'depends': ['base', 'point_of_sale'], - 清除缓存:修改前端模板后,一定要升级自定义模块,并且清除浏览器缓存(或者用无痕模式打开POS),否则前端不会加载新的模板内容
- 样式统一:建议沿用原模板的
subentry、label、value类,这样你的自定义内容会和原有的Total、Taxes样式保持一致,不会出现排版混乱
内容的提问来源于stack exchange,提问作者phanikumar
相关产品推荐
相关产品推荐

