Odoo 18自定义模块UncaughtPromiseError问题排查求助
Odoo 18 自定义模块「View types not defined tree」错误排查与解决
错误原因分析
错误提示明确指出act_window动作中存在未定义的tree视图类型,尽管你已将XML中的<tree>标签替换为<list>,但问题出在视图记录的type字段未正确设置:
- Odoo 18中
tree视图已被list替代,若视图记录未显式指定type="list",系统会默认使用旧的tree类型,导致类型未定义错误。 aircraft_view.xml中重复定义了view_aircraft_list视图,第二个记录覆盖了第一个正确设置type="list"的视图,且未指定类型字段。mission_views.xml、pilot_stats_view.xml中的list视图均未添加type="list"字段,默认使用tree类型。menu_views.xml中action_warthunder_pilot_stats指定了view_mode="list,form",但未定义warthunder.pilot.stats的form视图,可能引发额外错误。
具体解决步骤
移除重复的视图记录
打开aircraft_view.xml,删除最后一段重复定义的view_aircraft_list记录,保留第一个包含type="list"的定义:<!-- 保留这段正确的定义,删除后面重复的 --> <record id="view_aircraft_list" model="ir.ui.view"> <field name="name">warthunder.aircraft.list</field> <field name="model">warthunder.aircraft</field> <field name="type">list</field> <field name="priority">1</field> <field name="arch" type="xml"> <list> <field name="name"/> <field name="battle_rating"/> <field name="nation"/> <field name="pilot_id"/> <field name="total_missions"/> </list> </field> </record>为所有list视图添加
type="list"字段- 在
mission_views.xml的view_mission_list中添加类型字段:<record id="view_mission_list" model="ir.ui.view"> <field name="name">warthunder.mission.list</field> <field name="model">warthunder.mission</field> <field name="type">list</field> <!-- 添加此行 --> <field name="arch" type="xml"> <list> <field name="name"/> <field name="date"/> <field name="aircraft_id"/> <field name="result"/> </list> </field> </record> - 在
pilot_stats_view.xml的view_pilot_stats_list中添加类型字段:<record id="view_pilot_stats_list" model="ir.ui.view"> <field name="name">warthunder.pilot.stats.list</field> <field name="model">warthunder.pilot.stats</field> <field name="type">list</field> <!-- 添加此行 --> <field name="arch" type="xml"> <list> <field name="pilot_id"/> <field name="total_missions"/> <field name="victories"/> <field name="defeats"/> <field name="win_rate" widget="percentage"/> </list> </field> </record>
- 在
修正pilot stats动作的视图模式
由于未定义warthunder.pilot.stats的form视图,修改menu_views.xml中的action_warthunder_pilot_stats:<record id="action_warthunder_pilot_stats" model="ir.actions.act_window"> <field name="name">Pilot Stats</field> <field name="res_model">warthunder.pilot.stats</field> <field name="view_mode">list</field> <!-- 移除form --> </record>若需要form视图,需为
warthunder.pilot.stats添加对应的form视图记录。升级模块并清除缓存
- 在Odoo后台升级你的自定义模块
- 清除浏览器缓存(快捷键:Ctrl+Shift+R),确保前端加载最新的视图配置
内容的提问来源于stack exchange,提问作者NNKtv28
相关产品推荐
相关产品推荐

