Odoo Onchange 方法详解
在 Odoo 开发中,onchange 方法的核心价值在于提升用户体验。它允许我们在用户填写单据时,根据某个字段的输入动态更新界面上其他字段的值,而无需先将数据保存到数据库。这种前端即时反馈机制能显著减少无效数据的提交。
实现逻辑
要实现这一功能,我们需要定义一个模型方法,并使用 @api.onchange 装饰器进行标记。当装饰器中指定的字段发生变化时,该方法会自动触发。
需要注意的是,@api.onchange 支持传入多个字段名,用逗号分隔。只要其中任意一个字段发生变更,回调函数就会被调用。
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class BuildModel(models.Model):
_name = 'build.model'
name = fields.Char(default='/')
onchange_field01 = fields.Integer(string='Onchange Fields01', help='Onchange Fields01', default=1)
onchange_field02 = fields.Integer(string='Onchange Fields02', help='Onchange Fields02', default=1)
onchange_field03 = fields.Integer(string='Onchange Fields03', help='Onchange Fields03', default=1)
@api.onchange('onchange_field01', 'onchange_field02')
def _onchange_onchange_field03(self):
# 这里直接修改 self 上的字段,界面会立即响应
self.onchange_field03 = self.onchange_field01 + self.onchange_field02
# 返回特定的字典结构来控制客户端行为
return {
'warning': {
'title': 'Onchange Warning Test Title',
:
}
}


