如何在自定义模块中创建新用户组并为特定组分配新模型权限?
关于Odoo自定义模块中用户组创建与权限配置的解决方案
一、如何在自定义模块中创建新用户组?
创建自定义用户组步骤很清晰,按下面的流程来就行:
- 先在你的自定义模块目录下,新建
security文件夹(如果还没有的话),然后在里面创建groups.xml文件。 - 在
groups.xml里写入创建用户组的XML代码,以你需要的「Product Extended User」组为例:
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="group_product_extended_user" model="res.groups"> <field name="name">Product Extended User</field> <!-- 关联到你的模块所属分类,这里替换成你模块对应的分类ID,比如自定义模块分类 --> <field name="category_id" ref="base.module_category_custom"/> <!-- 如果需要继承普通用户的基础权限,可添加这个字段,不需要的话可以删掉 --> <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> <field name="comment">用于授予访问Product Extended模型及自定义模块的权限</field> </record> </odoo>
- 最后把这个XML文件添加到模块的
__manifest__.py的data列表中,保证模块加载时能读取到:
'data': [ # 其他数据文件... 'security/groups.xml', 'security/ir.model.access.csv', ],
二、解决你配置权限时遇到的问题
看了你提供的ir.model.access.csv配置,大概率是引用ID的问题,给你梳理几个关键点和修正方案:
- 组ID引用错误:你写的
base.group_product_extended_user不对,这个组是你自定义的,不属于base模块,应该用你的模块名.group_product_extended_user(比如你的模块叫product_extended,那就是product_extended.group_product_extended_user)。 - 确认模型ID正确性:
model_product_extended是模型product.extended对应的默认XML ID,这个一般没问题,但要确保你的模型定义里没有手动修改过ID。 - 修正后的CSV配置示例:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_product_extended_user_group,Product Extended User Access,model_product_extended,product_extended.group_product_extended_user,1,1,1,1
- 模块升级验证:修改完配置后,一定要在Odoo后台升级你的自定义模块(或者用命令行
odoo-bin -u your_module_name),确保新的权限和组被加载。 - 后台验证:升级后去「设置 > 用户与公司 > 用户组」里找到「Product Extended User」组,检查它的权限列表里是否包含了「Product Extended」模型的读写创建删除权限。
如果还是有问题,可以查看模块的运行日志,看看有没有加载时的报错(比如ID不存在、权限重复之类的提示),这些信息能帮你快速定位问题。
内容的提问来源于stack exchange,提问作者M.E.
相关产品推荐
相关产品推荐

