You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 11.0替换Forecasted按钮视图触发JavaScript错误求助

解决Odoo 11中替换Forecasted按钮后出现的JavaScript错误

我看了你遇到的问题,作为Odoo新手,这种模型不匹配的坑很容易踩中。先给你拆解下错误原因,再直接给你修正后的代码:

错误根源

你遇到的TypeError: list is undefined本质是视图与Action的模型不匹配:

  • 你的自定义树视图product_product_forecast_tree_view绑定的模型是product.template
  • 但对应的Actionaction_stock_level_forecast_report_product_tree设置的res_model却是product.product
    Odoo加载数据时找不到对应模型的列表数据,就抛出了这个JS错误。另外你的树视图里没有任何可见字段,也可能加重加载异常。

修正后的完整代码

<!-- 自定义树视图:修正模型为product.product,添加可见字段 -->
<record id="product_product_forecast_tree_view" model="ir.ui.view">
 <field name="name">product.product.forecast.tree.view</field>
 <field name="model">product.product</field> <!-- 这里改成product.product,和Action匹配 -->
 <field name="arch" type="xml">
 <tree string="Stock Level Forecast">
 <field name="name"/> <!-- 添加至少一个product.product的字段,确保树视图能正常渲染 -->
 <field name="qty_available"/> <!-- 可以再加个库存相关字段,贴合Forecast的需求 -->
 </tree>
 </field>
</record>

<!-- 自定义Action:保持res_model为product.product,确保和视图模型一致 -->
<record id="action_stock_level_forecast_report_product_tree" model="ir.actions.act_window">
 <field name="name">Stock Level Forecast Report</field>
 <field name="res_model">product.product</field>
 <field name="view_type">form</field>
 <field name="view_mode">tree</field>
 <field name="view_id" ref="product_product_forecast_tree_view"/>
 <!-- 可选:添加上下文,继承原按钮的过滤逻辑,比如只显示当前产品的相关数据 -->
 <field name="context">{'search_default_product_id': active_id}</field>
</record>

<!-- 替换Forecasted按钮的Action -->
<record id="product_product_forecasted_button" model="ir.ui.view">
 <field name="name">product.product.forecasted.button</field>
 <field name="model">product.product</field>
 <field name="inherit_id" ref="product.product_normal_form_view"/>
 <field name="arch" type="xml">
 <data>
 <!-- 确保xpath能精准定位到原按钮,原按钮的name是stock.action_stock_level_forecast_report_product -->
 <xpath expr="//button[@name='%(stock.action_stock_level_forecast_report_product)d']" position="attributes">
 <attribute name="name">%(action_stock_level_forecast_report_product_tree)d</attribute>
 </xpath>
 </data>
 </field>
</record>

额外注意事项

  • 模块升级与缓存:修改完XML后,一定要先升级你的自定义模块,然后清空浏览器缓存(Ctrl+Shift+R),再重启Odoo服务(如果有必要),避免旧代码残留。
  • 模型一致性原则:在Odoo中,Action的res_model必须和它关联的视图的model完全一致,否则会出现数据加载异常。
  • 字段合法性:视图中添加的字段必须属于绑定的模型,比如product.product的字段不能用product.template独有的字段。

这样修改后,你点击Forecasted按钮应该就能正常打开自定义的树视图,不会再出现JS错误了。

内容的提问来源于stack exchange,提问作者Kishiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:59:42