Odoo ORM中的many2one类型字段有 ondelete设置,对应数据表中关系处理
ondelete 设置当引用的record被删除是,如果对本record进行的行为,可填:set null, restrict, cascade
如
#主数据:
class BasicModel(models.Model):
_name = 'basic.model'
_description = 'Basic Model'
#单头:
class CustomerQuotation(models.Model):
_name = 'customer.quotation'
...
customer_quotation_line = fields.One2many('customer.quotation.line', 'bill_id', string='明细记录', copy=True,)
#单体:
class CustomerQuotationLine(models.Model):
_name = 'customer.quotation.line'
...
quotation_id = fields.Many2one('basic.model',
string='型号行',
required=True,
ondelete='restrict',) #对于存在主数据被使用情况,删除不被允许
bill_id = fields.Many2one('customer.quotation',
string='明细记录',
ondelete='cascade', #restrict、cascashe、set null
context={}, #context防止不合理数据加载
domain=[], · #domain过滤不符合数据,提升筛选体验
help='关联主表',)
则当对模型customer.quotation进行delete操作时,会引发如下操作
set null: 当customer.quotation中删除记录时,customer.quotation.line中相关记录的bill_id=null(适用于)
cascade: 当customer.quotation中删除记录时,customer.quotation.line中相关记录也全部删除(适用于业务数据主从表)
restrict: 当customer.quotation中删除记录时,如果customer.quotation.line中存在对应记录,则无法操作customer.quotation的删除
默认是: set null
系统的数据主要分三类:
1、主数据;2、业务数据(单据);3、配置数据
One2many: 主数据=>业务单据
One2many: 单头=>单体
Many2One: 单体=>单头
Many2many: 多对多,会生成小表,记录本对象与关联对象关系