【问题标题】:Issue in odoo 8 displaying warning messageodoo 8 中的问题显示警告消息
【发布时间】:2019-03-21 13:29:26
【问题描述】:
我正在尝试使用 onchange 装饰器验证“容量”字段,但由于某种原因,当我发送警告消息时,前一行停止工作。模板在没有警告的情况下更新字段
@api.onchange('capacity')
def check_capacity_values(self):
if self.capacity<0:
self.capacity=0
raise Warning(_('wrong capacity.'))
【问题讨论】:
标签:
api
warnings
decorator
odoo
onchange
【解决方案1】:
您可以使用字典作为api.onchange 修饰的方法的返回值。警告消息的键是warning,值是另一个字典,键为title 和message。一个例子:
return {
'warning': {'title': "WARNING!",
'message': "It isn't allowed to have a negative capacity!"}
}
【解决方案2】:
我认为问题可能是您在发出警告之前对 self.capacity 所做的更改未存储在数据库中,因为您使用的是@api.onchange,因此新值仅显示在 UI 中,但不存储在数据库中。
改用@api.depends 试试,更改会同时反映在 UI 和数据库中。
【解决方案3】:
@api.onchange('capacity')
def check_capacity_values(self):
if self.capacity<0:
self.capacity=0
return {'warning': {
'title': "Warning",
'message': "message",
}
}