Odoo中修改关联模型「Add a line」文本的标准方法是什么?
Odoo中修改关联字段添加记录链接文本的规范方法
不需要重写default_view_get方法,Odoo提供了更简洁、符合规范的实现方式,以下是两种常用方案:
方案一:视图层面直接配置(推荐,无需编写Python/JS代码)
针对特定的related_model_ids字段,在表单视图的字段定义中,通过options参数指定自定义的添加按钮文本:
<field name="related_model_ids" widget="one2many" options="{'add_line_label': '你的自定义文本'}"> <!-- 内嵌的树视图/表单视图定义 --> <tree> <field name="field1"/> <field name="field2"/> </tree> </field>
如果是many2many字段,同样可以使用options参数:
<field name="related_model_ids" widget="many2many_tags" options="{'add_line_label': '你的自定义文本'}"/>
这种方式仅作用于当前字段,不会影响其他关联字段的添加按钮文本,完全符合Odoo的视图配置规范。
方案二:全局自定义(适合批量修改场景)
如果需要全局修改所有关联字段的添加按钮文本,或者需要更复杂的逻辑控制,可以通过继承Web模块的Widget实现:
- 创建自定义JS文件,继承
web.One2ManyWidget并重写_get_add_line_label方法:
odoo.define('your_module.one2many_widget', function (require) { "use strict"; var One2ManyWidget = require('web.One2ManyWidget'); One2ManyWidget.include({ _get_add_line_label: function () { // 自定义文本,可根据上下文动态调整 return this.options.add_line_label || "你的全局自定义文本"; }, }); });
- 在模块的
__manifest__.py中加载该JS文件:
'assets': { 'web.assets_backend': [ 'your_module/static/src/js/one2many_widget.js', ], },
这种方式适合需要统一修改多个字段的场景,但仅建议在全局需求时使用。
内容的提问来源于stack exchange,提问作者user1632812
相关产品推荐
相关产品推荐

