警告:
warning = {
'title': _('Warning!'),
'message': _('Exists the discount limit'),
}
return {'warning': warning}
UserError
raise UserError(_('Exists the discount limit'))
odoo中的Warning和UserError有什么区别
答案 0 :(得分:2)
在python中引发异常时。它向上传播调用堆栈,直到它在Odoo上处理。响应Web客户端调用的RPC层捕获所有异常,并且根据异常类,它将在Web客户端上触发不同的可能行为。
UserError 将在用户界面中显示错误消息,其定义在odoo.exceptions类中。配方代码将 OSError 更改为 UserError ,以确保以友好的方式显示消息。在所有情况下,都会回滚当前数据库事务。在Odoo 9和10中使用UserError来显示错误消息。
警告:在Odoo 8中,openerp.exception.Warning在9和10中扮演了 UserError 的角色,因为该名称具有欺骗性(这是一个错误而不是警告) )它与python内置的警告类相撞,它是为了向后兼容而保留的,你应该在odoo 9和10中使用 UserError 。
在我们返回警告的情况下,这意味着它只向用户显示警告消息,并且事务不会回滚。
答案 1 :(得分:2)
要以简单的方式回答它,两者在odoo中都是相同的。因为如果你签入odoo / exception.py refer odoo exception here
它清楚地理解它将警告称为UserError。由于模糊或与内置python的冲突,odoo v9和v10中不推荐使用odoo警告。
要获取有关python警告的信息,请参阅python warning documentation。
因此建议使用odoo.exceptions.UserError而不是Warning
答案 2 :(得分:2)
警告是python关键字,在Odoo中使用了 UserError ,在odoo v9及更高版本中,不建议在odoo中使用警告。
SO我们在Odoo中使用了 UserError 。