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

Odoo 17自定义模块附件访问权限问题求助

问题分析

错误提示明确:非管理员用户没有ir.attachment模型的read权限。虽然已为自定义模型add.attachment配置全权限,但关联的ir.attachment模型权限未对普通用户开放——Odoo默认仅管理员拥有该模型的全部访问权限。

解决方案

提供两种可行方案,按需选择:

方案1:直接授予用户组ir.attachment基础权限(简单但权限范围广)

在模块的安全配置文件(如ir.model.access.csv)中添加一行权限配置,给目标用户组开放ir.attachment的读取权限:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_ir_attachment_user,ir.attachment user access,model_ir_attachment,base.group_user,1,0,0,0
  • 说明:base.group_user是默认普通用户组,若使用自定义用户组,替换为对应组ID即可;此处仅开放read权限,避免用户修改/删除所有附件。

方案2:通过记录规则限制用户仅访问关联附件(更安全)

若不想让用户看到所有附件,可通过记录规则(ir.rule)限制用户仅查看与自身add.attachment记录关联的附件。

步骤1:创建记录规则XML

在模块的XML文件中添加以下内容:

<record id="ir_attachment_add_attachment_rule" model="ir.rule">
    <field name="name">Access attachments linked to add.attachment</field>
    <field name="model_id" ref="base.model_ir_attachment"/>
    <field name="domain_force">[('id', 'in', user.env['add.attachment'].search([]).mapped('attachment_ids').ids)]</field>
    <field name="groups" eval="[(4, ref('base.group_user'))]"/>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>
  • 进阶说明:若需限制用户仅查看自己创建的add.attachment关联附件,可修改domain_force为:
    [('id', 'in', user.env['add.attachment'].search([('create_uid', '=', user.id)]).mapped('attachment_ids').ids)]
    

步骤2:补充基础读取权限

需同步在安全配置文件中添加方案1的基础读取权限配置,否则记录规则无法生效。

额外注意事项
  • 若使用自定义用户组,需将配置中的base.group_user替换为对应组ID;
  • 修改配置后,升级模块并刷新用户权限(路径:设置 > 用户与公司 > 用户 > 选择用户 > 动作 > 重新加载权限);
  • 修正XML视图中的拼写错误:Python模型名为add.attachment,但XML中多处写成add.ttachment(少一个t),这会导致视图无法正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:12:20