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

Odoo继承res.users模型后遇AccessError权限问题求助

分析 & 解决Odoo中res.users继承后的AccessError问题

嘿,我之前在扩展Odoo用户模型时也踩过类似的权限坑,来帮你拆解一下这个问题~

错误原因拆解

你遇到的AccessError(针对res.users的read操作),大概率是以下几种情况导致的:

  • 自定义权限覆盖了默认权限:你的模块里的ir.model.access.csv可能定义了针对res.users的权限记录,但配置错误——比如把perm_read设为0,或者指定的用户组不包含当前登录用户,导致用户连自己的用户记录都读不了。
  • 字段权限限制:如果你给新增的allowed_pricelists字段设置了groups属性(比如指定只有特定组能访问),但当前登录用户不在这个组里,也会触发读取权限错误。
  • 记录规则(ir.rule)冲突:如果你的模块添加了针对res.users的记录规则,或者修改了默认规则,导致规则逻辑限制了用户读取自身记录的权限。

具体解决办法

1. 检查并修正ir.model.access.csv配置

首先确保你的权限文件里有一条正确的res.users权限记录,给普通用户组(比如base.group_user)赋予读取权限。示例配置如下:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_res_users_allowed_pricelists,Access res.users with allowed pricelists,model_res_users,base.group_user,1,1,0,0
  • model_id:id必须是model_res_users(对应res.users模型的内置ID)
  • group_id:id根据你的需求选择,普通用户用base.group_user即可
  • perm_read一定要设为1,确保用户能读取用户记录

2. 检查自定义字段的权限设置

如果你在继承res.users时定义allowed_pricelists字段时加了groups参数,比如:

allowed_pricelists = fields.Many2many('product.pricelist', string="Allowed Pricelists", groups="your_module.your_custom_group")

要确保当前登录用户属于your_module.your_custom_group这个组。如果不需要字段级权限限制,可以去掉groups参数,让字段继承模型的默认权限。

3. 验证记录规则(ir.rule)

进入Odoo后台的「设置」→「技术」→「安全」→「记录规则」,找到res.users相关的规则:

  • 确保默认的「User: See own user」规则是启用状态,这条规则允许用户读取自己的记录
  • 检查你是否添加了自定义规则,规则的域(domain)是否正确,避免误限制了用户的读取范围

4. 升级模块并测试

修改完配置后,记得升级你的模块,让权限设置生效。先使用管理员账号确认配置正常,再切换到目标普通用户测试是否还会出现权限错误。

内容的提问来源于stack exchange,提问作者Sofiane Mdj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:33:48