Openerp 如何覆盖读/写odoo方法中的约束
首先,我有一个模块a overwrite方法,并添加了如下约束:Openerp 如何覆盖读/写odoo方法中的约束,openerp,Openerp,首先,我有一个模块a overwrite方法,并添加了如下约束: @api.multi def write(self, vals): if 'employee_id' in vals: if not self.env['hr.employee'].browse(vals['employee_id']).user_id: raise UserError(_('You must link this employee to a user')) r
@api.multi
def write(self, vals):
if 'employee_id' in vals:
if not self.env['hr.employee'].browse(vals['employee_id']).user_id:
raise UserError(_('You must link this employee to a user'))
return super(class_name, self).write(vals)
然后我创建一个模块B继承模块a,我想删除write方法中的约束,但没有办法。我试图继承write方法并删除约束,但运气不好,我所能做的就是用另一个句子替换约束字符串,但这不是我想要的,我如何解决它
更新#1:基于@thangtn的建议,但仍不起作用
@api.multi
def write(self, vals):
try:
if 'employee_id' in vals:
if not self.env['hr.employee'].browse(vals['employee_id']).user_id:
raise UserError(_('You must link this employee to a user'))
except UserError
pass
super(class_name, self).write(vals)
更新#2:通过将
super(class#u name,self).write(vals)
更改为models.Model.write(self,vals)
在上述代码(更新#1)中,您可以使用try/except绕过原始代码中的约束
from openerp.exceptions import UserError
@api.multi
def write(self, vals):
try:
super(class_name, self).write(vals)
except UserError:
# Your code goes here
# ...
为什么不使用@api.constraints而不是将约束放在写方法中?我不知道,模块A不是我写的,我所需要的只是删除此约束我已经尝试了你的建议,但这并不能解决我的问题,它通过了我捕获的约束,但仍然在父方法中得到相同的约束,我已经根据我的要求更新了