如果合同没有任何contract_lines,则创建合同时,则不应创建合同。如果创建了合同,并且必须删除编辑所有contract_lines,则不应更新合同并引发用户错误。我解决了第一个条件,但不知道如何解决第二个条件。这是我的代码。感谢。
@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)
我在写,更新方法上应用相同的方法它不起作用。它也没有引起任何用户错误。
答案 0 :(得分:1)
您需要管理一个python约束。请查看有关Odoo约束的内部简要视图。 How to make a constraint on a fields
您的解决方案是:
@api.constrains('contract_lines')
def _check_contract_lines(self):
if len(self.contract_lines) == 0:
raise UserError(_("Without Charges, Contract should not be saved"))
当您执行任何操作(如创建,写入或取消链接)时,此约束很快,您将实现目标。
答案 1 :(得分:0)
只要首次保存记录,就会运行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)