Odoo | 入门 | (3)-模型关系(基于Odoo12)

模型(model)之间的关系

简介

模型与模型之间一定会存在某种联系,比如说一张销售订单与销售员和客户有关系,
销售单和销售单行(产品)记录也有相互的联系。

关系字段

关系字段有三种:
Many2one(other_model, ondelete='set null')
    数据库外键,比如销售订单上会有一个客户字段,这个字段并不是一个普通的
    字符串,他实际上是一个res.partner模型的记录,如此两个模型的需求就
    可以通过M2O字段来实现。

One2many(other_model, related_field)
    一种虚拟的关系,是M2O的逆字段,它包含一组记录数据,当然也可能是没数
    据。
    
    我们可以简单的理解,如果销售订单和销售订单行是1:N的关系。
    那么对于销售订单的model来说就必须有一个包含多值的O2M记录字段,
    对于销售订单行来说,每一个行唯一的指向一个销售订单记录M2O记录字段
    如果出现O2M字段,那么其对应关系模型中一定有一个指回来的M2O逆字段。
    O2M上的related_field属性就是对应的M2O字段名
    
Many2many(other_model)
    一种复杂的桥接关系,我们简单的理解就是模型A与模型B是N:N的关系
    这样的关系无论是在A中存储还是在B中存储都不能满足多对多
    所以提供了一种M2M字段,当前模型创建后与其他模型的一种关系字段。
    当你创建好升级看结果时,会发现这张表只有两个字段,一个是当前模型的ID,
    一个是关联模型的ID,多对多的关系很好理解。
# M2O - 销售订单行字段
sale_order_id = fields.Many2one(comodel_name="sale.order.line")
# O2M - 销售订单头字段
sale_order_line_ids = fields.One2many(comodel_name="sale.order",
				inverse="sale_order_id")
# M2M - 销售订单和客户字段
partner_ids = fields.Many2many(comodel_name='res.partner',
                               relation="sale_order_and_partner_rel",
                               column1='sale_order_id',
                               column2='partner_id')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特本特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值