首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odoo 12: Many2one ondelete消息?

Odoo 12: Many2one ondelete消息?
EN

Stack Overflow用户
提问于 2019-11-20 16:33:15
回答 3查看 536关注 0票数 1

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

我的字段是:

代码语言:javascript
复制
parent_id = fields.Many2one("pgp.organizational.classifications", string="Parent classification", select=True, ondelete='restrict')

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

代码语言:javascript
复制
"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] "
EN

回答 3

Stack Overflow用户

发布于 2019-11-20 17:27:15

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

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

似乎很难重载

票数 0
EN

Stack Overflow用户

发布于 2019-11-20 19:39:50

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

票数 0
EN

Stack Overflow用户

发布于 2019-11-21 19:49:54

我通过重载unlink方法解决了这个问题。以下是代码,如果它对某人有帮助:

代码语言:javascript
复制
> @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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58949877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档