odoo中“警告”和“UserError”有什么区别?

时间:2017-06-16 11:33:50

标签: python openerp warnings odoo-8

警告:

warning = {
                    'title': _('Warning!'),
                    'message': _('Exists the discount limit'),
                }
            return {'warning': warning}

UserError

raise UserError(_('Exists the discount limit'))

odoo中的Warning和UserError有什么区别

3 个答案:

答案 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

相关问题