大家好我试图覆盖销售订单行的取消链接方法。调用函数但未提取UserError验证。
Odoo默认功能:
@api.multi
def unlink(self):
if self.filtered(lambda x: x.state in ('sale', 'done')):
raise UserError(_('You can not remove a sale order line.\nDiscard changes and try setting the quantity to 0.'))
return super(SaleOrderLine, self).unlink()
自定义覆盖功能:
@api.multi
def unlink(self):
if self.filtered(lambda x: x.state in ('sale', 'done')):
pass
return super(test, self).unlink()
提前致谢。
答案 0 :(得分:1)
继承模型并覆盖方法时。你打电话给super odoo保持chaning。
在你的情况下,odoo调用your method --> sale.order method --> models.Model method
根据我的理解,您希望通过验证意味着您不希望odoo调用取消链接your unlink method ---> models.Model unlink
不要使用超级尝试这个我认为它应该工作,如果不是我会显示其他解决方案
return models.Model.unlink(self)
答案 1 :(得分:1)
正如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()
How can override write method without executing the super write?
中讨论了类似的内容希望这已经回答了你的问题