Odoo 的模型关联是直接使用postgresql数据库的表外键。Odoo的写法如下:
instructor_id = fields.Many2one('res.partner', string="Instructor")
course_id = fields.Many2one('openacademy.course',
ondelete='cascade', string="Course", required=True)
其中ondelete
属性值,对应postgresql的外键约束 ON DELETE,取值说明:
NO ACTION
如果违反外键约束会产生一个错误。如果约束被延迟,那么到事务结束检查约束时如果仍然因为存在一个引用行而违反外键约束,则仍会产生错误。这是默认值。其他的动作action都不能被延迟。
RESTRICT
违反外键约束会产生一个错误。
CASCADE
级联删除或更新。分别删除一个引用行或者更新一个引用列的值。
SET NULL
设置引用列(referencing column(s))的值为null
SET DEFAULT
设置引用列为其缺省值。如果缺省值不是null,那么仍然需要被引用表中有一条记录的被引用字段的值与之匹配,否则操作会失败。