是否可以在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] "
答案 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()