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字段的只读属性:
- 完全移除只读限制:若需在父表单中自由维护子项,直接删除
readonly=True参数:
source_ids = fields.One2many( comodel_name='test_data.source', inverse_name='data_id', string='Source', )
- 动态控制只读状态:若仅需在特定条件下禁用编辑,使用
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
相关产品推荐
相关产品推荐

