Odoo 12:Many2one删除消息吗?

时间:2019-11-20 08:33:14

标签: odoo odoo-12

是否可以在Many2one字段中更改(编辑)默认的ondelete消息?

我的字段是:

parent_id = fields.Many2one("pgp.organizational.classifications", string="Parent classification", select=True, ondelete='restrict')

默认消息是这样的,但是我不会添加我的消息:

"Odoo Server Error - Greška kod provjere

The operation cannot be completed, probably due to the following:
- deletion: you may be trying to delete a record while other records still reference it
- creation/update: a mandatory field is not correctly set

[objekt s referencom: pgp.organizational.classifications - pgp.organizational.classifications] "

3 个答案:

答案 0 :(得分:0)

您不能在Many2one字段的声明中更改它。

生成此消息的代码在这里:https://github.com/odoo/odoo/blob/12.0/odoo/service/model.py#L120-L154

似乎很难重载

答案 1 :(得分:0)

限制和级联删除是两个最常见的选项。 RESTRICT防止删除引用的行。 NO ACTION表示如果在检查约束时仍存在任何引用行,则会引发错误;如果您未指定任何内容,则这是默认行为。 (这两个选择之间的本质区别在于,NO ACTION允许将支票推迟到事务的后期,而RESTRICT不允许。)CASCADE指定在删除引用的行时,应自动删除引用该行的行也一样还有其他两个选项:SET NULL和SET DEFAULT。当删除引用的行时,这将导致引用的列分别设置为null或默认值。请注意,这些并不能使您免于遵守任何约束条件。例如,如果某个操作指定SET DEFAULT,但默认值不能满足外键,则该操作将失败。

答案 2 :(得分:0)

我通过重载unlink方法解决了它。 以下代码可帮助他人:

> @api.multi
>     def unlink(self):
>         for field in self:
>             if field.parent_id:
>                 raise UserError(_('It is not possible to delete a record that is already used in transactions!'))
>         return super(YourClass, self).unlink()