Odoo 11.0替换Forecasted按钮视图触发JavaScript错误求助
解决Odoo 11中替换Forecasted按钮后出现的JavaScript错误
我看了你遇到的问题,作为Odoo新手,这种模型不匹配的坑很容易踩中。先给你拆解下错误原因,再直接给你修正后的代码:
错误根源
你遇到的TypeError: list is undefined本质是视图与Action的模型不匹配:
- 你的自定义树视图
product_product_forecast_tree_view绑定的模型是product.template - 但对应的Action
action_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
相关产品推荐
相关产品推荐

