Odoo onchange接口说明及代码示例

本文主要介绍了Odoo中onchange接口开发方法并提供代码示例

onchange接口

Onchange提供一种在后台用户界面(webclient)根据某些字段值改变表单其他数据的机制。

下面用一个 单价x数量=总价 的例子说明。首先你有一个model其中有三个字段,amount,unit_price, price 分别代表数量,单价,总价。你想要的效果是自动计算出总价,并在form中显示出来。通过一个用onchange装饰器的方法来实现。

<!-- content of form view -->
<field name="amount"/>
<field name="unit_price"/>
<field name="price" readonly="1"/>

# onchange handler
@api.onchange('amount', 'unit_price')
def _onchange_price(self):
# set auto-changing field
self.price = self.amount * self.unit_price
# Can optionally return a warning and domains
return {
'warning': {
'title': "Something bad happened",
'message': "It was very bad indeed",
}
}
这个方法有几点需要注意
1 self是单条记录 在一个form里展示 不能用在list view
2 方法里改变self里的字段 会更新到未保存的form里
3 通过onchange里参数字段 触发更新与上一节depands类似
4 onchange方法不针对某个特定字段

代码示例

@api.onchange('seats', 'attendee_ids')
def _verify_valid_seats(self):
if self.seats < 0:
return {
'warning': {
'title': "Incorrect 'seats' value",
'message': "The number of available seats may not be negative",
},
}
if self.seats < len(self.attendee_ids):
return {
'warning': {
'title': "Too many attendees",
'message': "Increase seats or remove excess attendees",
},
}
根据seats和attendee_ids改变 验证 用户输入1 检查座位数不能为负数2 座位数不能小于现有出席人数延伸

问题补充

onchange 和 depends 哪个先触发?答鼠标焦点失去时,onchange先触发

如何获得最好Odoo二次开发服务?星辉信息科技,专业Odoo二次开发公司

2

ERP大学

ERP大学专注于SAP及ODOO资料分享,提供ODOO实施资料,ODOO插件,ODOO代码,SAP实施资料教程和招聘商机分享等一站式服务,让每一个企业都能最以最高的性价比实施好ERP

发表评论

电子邮件地址不会被公开。 必填项已用*标注

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

Odoo onchange接口说明及代码示例
嘿!有什么能帮到您的吗?
返回顶部

显示

忘记密码?

显示

显示

获取验证码

密码找回

获取验证码

显示

返回登陆

Close