Odoo限制删除仍被引用的记录(m2m)

时间:2015-04-23 07:20:50

标签: constraints odoo odoo-8

我有这个字段:

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标准功能来限制这种删除,或者我需要自己实现这样的检查?

1 个答案:

答案 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()