如何在Odoo 12中添加新用户访问组?附配置示例
解决Odoo 12中自定义访问组显示在应用分组的问题
嘿,我看你遇到的问题是自定义的访问组被归类到了应用分组里,这是因为你创建了一个新的ir.module.category(也就是应用分类),然后把你的组都关联到这个分类上了。Odoo里,ir.module.category对应的是应用模块的分类,这类分组默认会在应用列表的「访问权限」区域显示;如果想让组出现在用户表单的「访问权限」标签下的业务功能分组里,咱们可以调整配置来解决。
方案一:把组关联到现有业务分类
如果你希望这些部门权限组和HR模块的权限组放在一起,直接把category_id改成HR模块的访问权限分类ID就行,比如hr.module_category_hr_access_rights:
<!-- 可以删除之前创建的module_security_app记录,不需要再保留独立应用分类 --> <record id="group_user_app" model="res.groups"> <field name="name">Department User</field> <!-- 加个前缀区分默认HR组,更清晰 --> <field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/> <field name="users" eval="[(4, ref('base.user_root'))]"/> <!-- 关联到HR模块的访问权限分类 --> <field name="category_id" ref="hr.module_category_hr_access_rights"/> </record> <record id="group_manager_app" model="res.groups"> <field name="name">Department Manager</field> <field name="implied_ids" eval="[(4, ref('group_user_app'))]"/> <field name="category_id" ref="hr.module_category_hr_access_rights"/> </record>
方案二:保留自定义分类(可选)
如果你确实需要自己独立的分类,其实ir.module.category本身就是应用级别的分类,所以它一定会出现在应用分组里。不过如果只是想让用户在编辑用户时能看到这个自定义分组,那你可以保留原来的module_security_app,但要确保模块依赖正确配置,在__manifest__.py里加上hr依赖:
# __manifest__.py { 'name': 'Department Security Access', 'version': '1.0', 'depends': ['base', 'hr'], 'data': [ 'security/your_security_config.xml', ], 'installable': True, }
问题根源解释
Odoo的res.groups(访问组)是通过category_id关联到ir.module.category的,而后者就是应用模块的分类容器。你之前新建了一个应用分类,所以你的组自然就被归到那个应用分组里了。把它改成业务模块的分类,组就会出现在用户表单对应的业务权限区域里。
验证步骤
- 保存修改后的XML和
__manifest__.py文件 - 在Odoo后台升级你的自定义模块
- 打开「设置 > 用户与公司 > 用户」,编辑任意用户,切换到「访问权限」标签,就能看到你的自定义组出现在对应区域了
内容的提问来源于stack exchange,提问作者Boubaker




