odoo 8 中的问题显示警告消息

Issue in odoo 8 displaying warning message

我正在尝试使用 onchange 装饰器验证 "capacity" 字段,但由于某种原因,当我发送警告消息时,前一行停止工作。模板更新字段时没有警告

@api.onchange('capacity')
def check_capacity_values(self):
    if self.capacity<0:
        self.capacity=0
        raise Warning(_('wrong capacity.'))

对于 api.onchange 修饰的方法,您可以使用字典作为 return 值。警告消息的键将是 warning,值是另一个包含键 titlemessage 的字典。一个例子:

return {
    'warning': {'title': "WARNING!",
                'message': "It isn't allowed to have a negative capacity!"}
}

我认为问题可能是您在发出警告之前在 self.capacity 中所做的更改未存储在数据库中,因为您使用的是@api.onchange,因此新值是仅显示在 UI 中,但未存储在数据库中。

尝试使用 @api.depends 代替,更改将同时反映在 UI 和数据库中。

@api.onchange('capacity')
def check_capacity_values(self):
    if self.capacity<0:
        self.capacity=0
        return {'warning': {
                    'title': "Warning",
                    'message': "message",
                    }
                }