我想重写一个write方法,该方法已经重写了相同模型的相同方法
最初的方法是这样的:
@api.multi
def write(self, values):
if list(values.keys()) != ['time_ids'] and any(workorder.state == 'done' for workorder in self):
raise UserError(_('You cannot modify a close workorder'))
return super(MrpWorkorder, self).write(values)
我需要将if语句更改为:
@api.multi
def write(self, values):
if list(values.keys()) != ['time_ids'] and any(workorder.state == 'cancel' for workorder in self):
raise UserError(_('You cannot modify a close workorder'))
return super(MrpWorkorder, self).write(values)
但当我这样做时,“super”将执行该方法的旧内容
所以,我需要知道如何重写重写的方法
如果要指定要覆盖其被覆盖的内置函数的模块,请执行以下操作:
导入课程(这里我从hr\U假期模块导入hr.leave课程):
然后复制整个函数并返回以下内容:
hr离开她<;不是继承类名。。因此,您必须将继承类名更改为不同的名称
为了满足我们的需求,解决方案比您想象的要简单:
只需从以下位置更改退货:
为此:
这样,您可以重写原始方法,并避免所有其他已重写的现有方法。 当您必须这样做时,这是一种非常特殊的情况,因此如果您不想丢失其他模块中的一些重写方法,请小心
这也适用于写入和取消链接方法
相关问题 更多 >
编程相关推荐