Openerp 如果合同没有费用,则引发用户错误
在创建合同时,如果合同没有任何合同行,则不应创建合同。如果创建了合同,并且在编辑所有合同行时必须删除,则不应更新合同并引发用户错误。我解决了第一个条件,但不知道如何解决第二个条件。这是我的密码。谢谢Openerp 如果合同没有费用,则引发用户错误,openerp,odoo-9,odoo-10,Openerp,Odoo 9,Odoo 10,在创建合同时,如果合同没有任何合同行,则不应创建合同。如果创建了合同,并且在编辑所有合同行时必须删除,则不应更新合同并引发用户错误。我解决了第一个条件,但不知道如何解决第二个条件。这是我的密码。谢谢 @api.model def create(self, vals): if len(vals['contract_lines']) == 0: raise UserError(_("Without Charges, Contract should not be saved")
@api.model
def create(self, vals):
if len(vals['contract_lines']) == 0:
raise UserError(_("Without Charges, Contract should not be saved"))
return super(transport, self).create(vals)
我在写,更新方法上应用了同样的方法,但它不起作用。它也不会引发任何用户错误。每当第一次保存记录时,都会运行create方法。记录的任何后续保存都是通过write方法处理的,因此您还需要对其进行扩展
# Note the API call is multi, not model
@api.multi
def write(self, vals):
# I'm not sure if the update is passed through self or vals,
# so you may need to test this a bit.
if not self.contract_lines or len(vals['contract_lines']) == 0:
raise UserError(_("Without Charges, Contract should not be saved"))
return super(transport, self).write(vals)
您需要管理一个python约束。请查看内部关于Odoo约束的简要视图 您的解决方案是:
@api.constrains('contract_lines')
def _check_contract_lines(self):
if len(self.contract_lines) == 0:
raise UserError(_("Without Charges, Contract should not be saved"))
当您执行任何操作(如创建、写入或取消链接)时,此约束将被激活,您将实现目标。将不会有VAL传递到此约束中,尽管有吗?我喜欢这个解决方案,但它不是自我合同吗?