如何覆盖odoo10中销售订单的取消链接方法

如何覆盖odoo10中销售订单的取消链接方法,odoo,odoo-10,unlink,raiserror,Odoo,Odoo 10,Unlink,Raiserror,您好,我尝试覆盖销售订单行的取消链接方法。已调用函数,但未删除raise USERROR验证 Odoo默认功能: @api.multi def取消链接(自): 如果自过滤(lambda x:x.state in('sale','done'): raise USERROR(\无法删除销售订单行。\n取消更改并尝试将数量设置为0)。) return super(SaleOrderLine,self).unlink() 自定义覆盖功能: @api.multi def取消链接(自): 如果自过滤(la

您好,我尝试覆盖销售订单行的取消链接方法。已调用函数,但未删除raise USERROR验证

Odoo默认功能:

@api.multi
def取消链接(自):
如果自过滤(lambda x:x.state in('sale','done'):
raise USERROR(\无法删除销售订单行。\n取消更改并尝试将数量设置为0)。)
return super(SaleOrderLine,self).unlink()
自定义覆盖功能:

@api.multi
def取消链接(自):
如果自过滤(lambda x:x.state in('sale','done'):
通过
返回super(test,self).unlink()

提前感谢。

当您继承模型并重写方法时。你叫超级奥多,继续改变

在您的情况下,意味着odoo调用
您的方法-->sale.order方法-->models.Model方法

据我所知,您希望通过验证意味着您不希望odoo调用unlink
您的unlink方法-->models。Model unlink

不要使用超级尝试这个我认为它应该工作,如果没有我会显示其他解决方案

    return models.Model.unlink(self)

正如Cherif所建议的,您可以绕过
super
继承工作流中的任何步骤
在您的情况下,如果要直接调用
models.Model unlink
方法,请尝试以下方法:

@api.multi
def unlink(self):
    if self.filtered(lambda x: x.state in ('sale', 'done')):
        pass
    return super(models.Model, self).unlink()
类似的情况也在本文中讨论过

希望这能回答你的问题