1

我有这个领域:

range_application_ids = fields.Many2many('insurance.commission.rule.range.application', 'application_rule_range_rel', 'rule_range_id',
    'application_id', 'Applications', ondelete='restrict', required=True)

insurance.commission.rule.range.application如果通过 Many2many 关系引用该模型()记录,我需要限制删除它。现在,如果我转到该模型记录列表并删除其中任何一个,Odoo 不会发出任何警告并让我这样做。然后,当我insurance.commission.rule.range.application通过 many2many 字段找到另一个与相关的模型记录时,我看到它已被删除(并且该字段是必需的)。设置ondelete='restrict'没有做任何事情。

有没有办法使用 Odoo 标准功能限制此类删除,或者我需要自己实施此类检查?

4

1 回答 1

3

现在我自己实现了这样的约束,但如果有人知道如何使用标准方法来做到这一点,请发布另一个答案。这是代码(它进入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()
于 2015-04-23T07:31:53.200 回答