- 上传者: Administrator
- 上传时间:2023年11月14日 00时33分18秒
* Relational fields ** *** The relational fields in Odoo are used to link one model to another model. In any real business scenario, we must create r ......
Relational fields
The relational fields in Odoo are used to link one model to another model. In any real business scenario, we must create relational links between different models to implement and develop our business as per the needs. The three types of relational fields in Odoo are
· Many2one field
· One2many field
· Many2many field
Many2one fields:
To connect the current object to another object, use the Many2one field. It is the parent of this object. It links a record from the current model to a record from the second model, also known as the co-model. The _id suffix appears in many2one fields.
field_id = fields.Many2one(‘comodel_name’, ‘Field Name’) comodel_name: It is the name of the related model.
For example, if we want to link our model to the 'res.partner' model and call the field 'Contact,' we may create a Many2one field called 'partner_id,' which looks like this:
partner_id = fields.Many2one('res.partner', 'Contact')
If we need to retrieve a contact's name, which is contained in the comodel as a character field called 'name,’ Then we can use partner_id.name
One2many fields:
The inverse of the Many2one relationship is the One2Many field relation. The relationships between the many rows of the parent and the child model can be created using this field. The usual,
One2many fields have the _ids suffix.
The syntax for writing the One2many field:
field_ids = fields.One2many('comodel_name', 'inverse_name', 'Field Name')
comodel_name: It is the name of a related model.
inverse_name: It is the name of the inverse Many2one field in comodel.
The values of fields behave like a list. Therefore we can access the data using a loop.
for rec in self.field_ids:
print(rec.name)
For example, consider the order_line_ids field defined in the model ‘sale.order’
order_line_ids = fields.One2many('sale.order.line', 'order_id', string='Order Lines')
Here, the ‘order_line_ids’ is the One2many field in the comodel ‘sale.order.line’, which has a Many2one field ‘order_id’, that is related to the ‘sale.order’ model. If you want to get the product of the ‘order_line_ids’, which is stored in the field called ‘product_id’ in the comodel, Then you can use:
for rec in order_line_ids:
print(rec.product_id.name)
Many2many fields:
Multiple bidirectional relationships between two separate models are created using Many2many fields. Each record on one side can be connected to any number of records on the other.
The _ids suffix is used in many2many fields by convention.
The syntax for writing the Many2many field:
field_ids = field.Many2many('comodel_name', 'Field Name')
comodel_name: which is the name of a related model. The values of fields behave like a list. Therefore we can access the data using a loop.
for rec in self.field_ids:
print(rec.name)
Many2many fields have some optional attributes. Optional attributes are ‘relation,’ ‘column_1’, and ‘column_2’.
relation: It stores the relation in the database.
column_1: It is the column referring to our model records in the table ‘relation.’
column_2: It is the column referring to our comodels records in the table ‘relation.’
For example, consider the ‘tag_ids’ field defined in the model ‘sale.order.’
tag_ids = fields.Many2many('crm.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags')
Here, the ‘tag_ids’ is the Many2many field in the comodel 'crm.tag’, we can find a relational table called ‘sale_order_tag_rel’ in the database, having two columns ‘order_id’ and ‘tag_id.’
本文章从网上收集,如有侵权请联系tderp@tderp.com删除
- 微信扫一扫,一分也是爱:
服务原则及地区范围
宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。
我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!
通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。
宜兴地区提供上门服务:
- 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
- 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。