Odoo自定义模块创建失败:ir.model.access.csv的model_id字段报错求助
Odoo自定义模块权限文件报错解决
我们公司在用基于Odoo的全新ERP系统,为理解Odoo工作机制编写了自定义模块,但处理ir.model.access.csv文件时失败,相关代码与报错信息如下:
1. music.py代码
from odoo import fields, models class Music(models.Model): _name = "music" _description = "This is Music" name = fields.Char("Name") title = fields.Char("Title") genre = fields.Char("Genre")
2. 视图文件代码
<odoo> <data> <!--name, model und arch bezieht sich auf irgendwas im model ir.ui.view--> <!--name = eindeutiger name--> <!--model = der angegebene name in der Klasse--> <record id="music_tree_view" model="ir.ui.view"> <field name="name">music.tree.view</field> <field name="model">music</field> <field name="arch" type="xml"> <tree> <field name="name"/> <field name="title"/> </tree> </field> </record> <record id="music_form_view" model="ir.ui.view"> <field name="name">music.form.view</field> <field name="model">music</field> <field name="arch" type="xml"> <form string="Music"> <group> <field name="name"/> <field name="title"/> <field name="genre"/> </group> </form> </field> </record> <record id="music_action" model="ir.actions.act_window"> <field name="name">Music</field> <field name="res_model">music</field> <field name="view_mode">tree,form</field> </record> <menuItem id="music_root_menu" name="Music" /> <menuItem id="music_sub_root_menu" name="All My Music" parent="music_root_menu" /> <menuItem id="music_sub_root_menu" action="music_action" name="My Music List" parent="music_sub_root_menu" /> </data> </odoo>
3. ir.model.access.csv代码
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_music,music,model_music,base.group_user,1,1,1,1
报错信息
Exception: Laden des Moduls Music fehlgeschlagen: Datei Music\security/ir.model.access.csv konnte nicht verarbeitet werden
Kein passender Datensatz für externe ID „model_music.music“ in Feld „Model“ gefunden
Ein erforderlicher Wert für das Feld „Model“ (model_id) fehlt.=> no value for the field model_id.
问题排查与修复
核心问题1:权限文件model_id引用错误
Odoo中模型对应的外部ID格式为model_<模型名称>,但系统报错时在寻找model_music.music,说明模块命名空间未正确关联。可按以下方式修正:
- 如果模块文件夹名为
music,则显式指定命名空间:
把id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_music,music,music.model_music,base.group_user,1,1,1,1music替换为你实际的模块文件夹名称。
核心问题2:菜单ID重复
视图文件中有两个menuItem使用了相同的id="music_sub_root_menu",会导致菜单创建失败并间接影响模块加载,需修改其中一个ID:
<menuItem id="music_list_menu" action="music_action" name="My Music List" parent="music_sub_root_menu" />
核心问题3:__manifest__.py配置缺失
确保模块的__manifest__.py正确声明了权限文件和视图文件的加载路径:
{ 'name': 'Music', 'version': '1.0', 'author': 'Your Name', 'depends': ['base'], 'data': [ 'views/music_views.xml', 'security/ir.model.access.csv', ], 'installable': True, 'auto_install': False, }
内容的提问来源于stack exchange,提问作者Taucher
相关产品推荐
相关产品推荐

