Odoo 12. 当我更改权限文件 ir.model.access.csv 并升级模块时,缺少字段 'Object' (model_id) 的必需值

Odoo 12. Missing required value for the field 'Object' (model_id) when I change the permission file ir.model.access.csv and upgrade the module

我已经在 odoo 12 中创建了自己的模块。我已经更改了权限文件 - ir.model.access.csv。全部代码如下

ir.model.access.csv :

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_student_student,access.student.student,model_student_student,,1,1,1,0

./models/models :

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class StudentStudent(models.Model):
    _name = "student.student"
    _description = "description"
    name = fields.Char(string="Name", required=True)
    age = fields.Integer(string="Age")
    photo = fields.Binary(string="Image")
    gender = fields.Selection(
        [("male", "Male"), ("female", "Female"), ("others", "Others")], string="Gender"
    )
    student_dob = fields.Date(string="Date of Birth")
    student_blood_group = fields.Selection(
        [
            ("A+", "A+ve"),
            ("B+", "B+ve"),
            ("O+", "O+ve"),
            ("AB+", "AB+ve"),
            ("A-", "A-ve"),
            ("B-", "B-ve"),
            ("O-", "O-ve"),
            ("AB-", "AB-ve"),
        ],
        string="Blood Group",
    )
    nationality = fields.Many2one("res.country", string="Nationality")

当我尝试升级我的模块时出现错误消息:

Exception: Module loading assettracking failed: file assettracking\security/ir.model.access.csv could not be processed:
 No matching record found for external id 'model_student_student' in field 'Object'
Missing required value for the field 'Object' (model_id)

检查您的模型是否已加载到数据库中,如果没有,请在升级之前重新启动您的服务器以加载它。如果您已经这样做了,请尝试在您的 CSV 文件中使用:module_name.model_student_student

请检查您是否为student.student模型编写了init.py文件。

如果是,请在 .csv 文件中尝试以下代码access_student_student,access_student_student,model_student_student,,1,1,1,0

我通常做的一个技巧是添加一个模型,然后启动服务器进程,系统会警告我这个模型没有权限,并给你一个要添加到 [=17 的行的例子=].我从 shell window 复制它并将其粘贴到 ir.model.access.csv 并进行相应的编辑。

对于 Odoo 12,我发现您需要在 ir.model.access.csv 文件中指定一个用户组。如果我不指定用户组,则不会为我的用户显示菜单项。 我已经设置了具有不同权限的自定义用户组,但通常的默认设置是为 base.erp_user 和 base.erp_manager 指定权限。条目的一个例子是

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_student_student_user,access_student_student_user,model_student_student,base.group_user,1,1,1,0
access_student_student_admin,access_student_student_admin,model_student_student,base.group_erp_manager,1,1,1,1

以上面的例子为例,普通用户可以创建、阅读和编辑学生记录,但不能删除记录,而管理员可以删除记录。如果您指定自定义用户组,只有当登录用户在这些组中时,学生的菜单选项才会出现。