我有这个字段:
range_application_ids = fields.Many2many('insurance.commission.rule.range.application', 'application_rule_range_rel', 'rule_range_id',
'application_id', 'Applications', ondelete='restrict', required=True)
如果通过Many2many关系引用,我需要限制删除那些模型(insurance.commission.rule.range.application
)记录。现在如果我去那个模型记录列表并删除任何一个,Odoo不会抛出任何警告并让我这样做。然后,当我到达另一个与insurance.commission.rule.range.application
到many2many字段有关系的模型记录时,我看到它已被删除(并且该字段是必需的)。设置ondelete='restrict'
没有做任何事情。
有没有办法用Odoo标准功能来限制这种删除,或者我需要自己实现这样的检查?
答案 0 :(得分:1)
现在我自己实施了这样的约束,但如果有人知道如何使用标准方法,请发布另一个答案。这是代码(它以insurance.commission.rule.range.application
模型(或其他类中的类):
@api.multi
def unlink(self):
range_obj = self.env['insurance.commission.rule.range']
rule_ranges = range_obj.search([('range_application_ids', 'in', self.ids)])
if rule_ranges:
raise Warning(_("You are trying to delete a record that is still referenced!"))
return super(insurance_commission_rule_range_application, self).unlink()