odoo模型中many2one的 ondelete处理set null, restrict, cascade

odoo ORM中的many2one类型字段有 ondelete设置,对应数据表中关系处理

 

ondelete 设置当引用的record被删除是,如果对本record进行的行为,可填:set null, restrict, cascade

model modelA
a = fields.Many2one('b', string='b', ondelete='set null')

则当对模型b进行delete操作时,会引发如下操作

set null: 当b中删除记录时,modelA中相关记录的a=null。 这种模式是odoo内默认模式,不同类型单据间,没有强上下游关系时,多数用这种。

 

restrict: 当b中删除记录时,如果modelA中存在对应记录,则无法操作 b 的删除。 主要用于数据完整性相关,即上下游单据,不允许随便删除的情况。

 

cascade: 当b中删除记录时,modelA中相关记录也全部删除,多数用于处理 单头主记录删除,其明细也删除。

 

默认是: set null

 

odoo V10中文开发参考手册:ORM API