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

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,1
    
    把music替换为你实际的模块文件夹名称。

核心问题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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:00:01