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

Odoo表单中one2many字段的Add Data Line按钮不显示问题

One2many字段「添加数据行」按钮不显示的解决方案

问题现象

在test_data.data模型的表单视图中,关联test_data.source的One2many字段source_ids未显示「添加数据行」按钮和删除图标,已为基础用户分配两个模型的create/update/delete权限,但问题依旧。

关键问题点

查看test_data.data模型代码发现,source_ids字段被设置了全局readonly=True:

source_ids = fields.One2many(
    comodel_name='test_data.source', inverse_name='data_id',
    string='Source', readonly=True,  # 此处为核心问题
)

One2many字段一旦设置全局只读,无论视图中配置create="1"/edit="1"/delete="1",都会被强制禁用编辑、创建和删除操作,导致按钮与图标隐藏。

解决方案

根据业务需求调整source_ids字段的只读属性:

  1. 完全移除只读限制:若需在父表单中自由维护子项,直接删除readonly=True参数:
source_ids = fields.One2many(
    comodel_name='test_data.source', inverse_name='data_id',
    string='Source',
)
  1. 动态控制只读状态:若仅需在特定条件下禁用编辑,使用attrs实现动态只读:
source_ids = fields.One2many(
    comodel_name='test_data.source', inverse_name='data_id',
    string='Source',
    attrs={'readonly': [('state', '=', 'done')]},  # 示例:状态为done时只读
)

额外验证点

调整代码后需确认:

  • 已更新模块并重启Odoo服务
  • 通过开发者模式刷新视图配置
  • 用户确实拥有test_data.source模型的create/write/unlink权限(当前ir.model.access.csv配置无问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:38