odoo中的“warning”和“UserError”有什么区别?

问题描述:

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

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

UserError

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

是什么在odoo

要以简单的方式回答它们,odoo中的两者都是相同的。因为如果你检查odoo/exception.py refer odoo exception here

它清楚地知道它指的是Warning作为UserError。 odoo警告在odoo v9和v10中由于含糊不清或与python内置的冲突而被弃用。

要获取有关python警告的信息,请参考python warning documentation

所以建议使用odoo.exceptions.UserError而不是Warning

警告和UserError之间的区别时,一个异常的蟒蛇提高。它会传播调用堆栈直到在Odoo上处理它。响应Web客户端所做调用的RPC层捕获所有异常,并根据异常类,在Web客户端上触发不同的可能行为。

UserError将在用户界面中显示错误消息,并将其定义在odoo.exceptions类中。配方代码将OSError更改为UserError以确保以友好的方式显示消息。在所有情况下,当前数据库事务都会回滚。在Odoo 9和10中,使用UserError来显示错误消息。

警告:在Odoo 8 openerp.exception.Warning在9和10打UserError的作用,它的反对,因为这个名字欺骗(它不是警告错误),它相撞蟒蛇内置警告类,它保持了向后兼容性,虽然我们返回警告这意味着它仅会显示警告信息给用户和交易不会回滚你应该使用odoo 9 UserError和10

你的情况。