【问题标题】:What is the difference between "warning" and "UserError" in odoo?odoo中的“警告”和“用户错误”有什么区别?
【发布时间】:2017-06-16 11:33:50
【问题描述】:

警告:

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

用户错误

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

odoo中的Warning和UserError有什么区别

【问题讨论】:

    标签: python openerp warnings odoo-8


    【解决方案1】:

    在 python 中引发异常时。它向上传播调用堆栈,直到在 Odoo 上进行处理。响应 Web 客户端调用的 RPC 层会捕获所有异常,并根据异常类在 Web 客户端上触发不同的可能行为。

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

    警告:在 Odoo 8 中 openerp.exception.Warning 在 9 和 10 中扮演了 UserError 的角色,因为名称具有欺骗性而被弃用(这是一个错误而不是警告) 它与 python 内置的警告类发生冲突,它是为了向后兼容而保留的,您应该在 odoo 9 和 10 中使用 UserError

    在您的情况下,当我们返回警告时,这意味着它仅向用户显示警告消息并且事务不会回滚。

    【讨论】:

      【解决方案2】:

      用简单的方式回答它,两者在odoo中是相同的。因为如果你签入 odoo/exception.py refer odoo exception here

      它清楚地理解它将Warning 称为UserError。 odoo 警告在 odoo v9 和 v10 中已被弃用,因为它存在歧义或与内置 python 冲突。

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

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

      【讨论】:

        【解决方案3】:

        warning 是 python 关键字,UserError 在 Odoo 中使用,并且在 odoo v9 及以后版本中不推荐使用警告。

        所以我们在 Odoo 中使用了 UserError

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-02
          相关资源
          最近更新 更多