创建Odoo模型时触发tree视图RPC_ERROR问题求助
Odoo模块激活报错:Wrong value for ir.ui.view.type: 'tree' 解决
我是Odoo与Python开发新手,正尝试创建一个模块以使用现有数据库表pc_clientes,并通过tree、form视图展示数据。已编写models.py及视图XML代码,但激活模块时触发RPC_ERROR,错误提示“Wrong value for ir.ui.view.type: 'tree'”。此前按教程操作可成功,现无法解决该问题,恳请帮助。
models.py
# models.py from odoo import models, fields class pc_clientess(models.Model): _name = "clientes.pc_clientes" _description = "Tabla de clientes" _table = "pc_clientes" xempgen_id = fields.Char(string="Empresa ID", required=True) xcliente_id = fields.Char(string="Cliente ID", required=True)
视图XML
<odoo> <data> <record id="clientes_tree_view" model="ir.ui.view"> <field name="name">clientes.tree.view</field> <field name="model">clientes.pc_clientess</field> <field name="arch" type="xml"> <tree> <field name="xempgen_id"/> <field name="xcliente_id"/> </tree> </field> </record> <record id="clientes_form_view" model="ir.ui.view"> <field name="name">clientes.form.view</field> <field name="model">clientes.pc_clientess</field> <field name="arch" type="xml"> <form> <field name="xempgen_id"/> <field name="xcliente_id"/> </form> </field> </record> <record id="clientes_action" model="ir.actions.act_window"> <field name="name">Clientes</field> <field name="res_model">clientes.pc_clientess</field> <field name="view_mode">tree,form</field> </record> <menuitem id="menu_root" name="Rioma"/> <menuitem id="menu_clientes" name="Clientes" parent="menu_root"/> <menuitem id="menu_clientes_list" name="Clientes List" parent="menu_clientes" action="clientes_action"/> </data> </odoo>
错误信息
RPC_ERROR Odoo Server Error Occured on localhost:8069 on model ir.module.module and id 16 on 2024-11-19 08:40:10 GMT Traceback (most recent call last): ... ValueError: Wrong value for ir.ui.view.type: 'tree' ... odoo.tools.convert.ParseError: while parsing file:/c:/odoo/modules/clientes/views/templates.xml:4, somewhere inside <record id="clientes_tree_view" model="ir.ui.view"> <field name="name">clientes.tree.view</field> <field name="model">clientes.pc_clientess</field> <field name="arch" type="xml"> <tree> <field name="xempgen_id"/> <field name="xcliente_id"/> </tree> </field> </record>
解决方案
1. 修正模型名称拼写错误
模型的_name定义为clientes.pc_clientes,但视图XML中所有引用模型的地方都写成了clientes.pc_clientess(多了一个末尾的s),这会导致Odoo找不到对应模型,进而引发视图类型推断错误,这是核心问题。
2. (可选)明确指定视图类型
虽然Odoo可以从视图arch的根节点推断类型,但明确添加type字段能避免潜在的推断问题,让代码逻辑更清晰。
修正后的视图XML代码如下:
<odoo> <data> <record id="clientes_tree_view" model="ir.ui.view"> <field name="name">clientes.tree.view</field> <field name="model">clientes.pc_clientes</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree> <field name="xempgen_id"/> <field name="xcliente_id"/> </tree> </field> </record> <record id="clientes_form_view" model="ir.ui.view"> <field name="name">clientes.form.view</field> <field name="model">clientes.pc_clientes</field> <field name="type">form</field> <field name="arch" type="xml"> <form> <field name="xempgen_id"/> <field name="xcliente_id"/> </form> </field> </record> <record id="clientes_action" model="ir.actions.act_window"> <field name="name">Clientes</field> <field name="res_model">clientes.pc_clientes</field> <field name="view_mode">tree,form</field> </record> <menuitem id="menu_root" name="Rioma"/> <menuitem id="menu_clientes" name="Clientes" parent="menu_root"/> <menuitem id="menu_clientes_list" name="Clientes List" parent="menu_clientes" action="clientes_action"/> </data> </odoo>
修改后重新升级并激活模块,问题即可解决。
内容的提问来源于stack exchange,提问作者David Carmona Arrabal
相关产品推荐
相关产品推荐

