iT邦幫忙

2023 iThome 鐵人賽

DAY 28
1
Odoo

Odoo 16 入門介紹系列 第 28

關聯欄位的介紹

  • 分享至 

  • xImage
  •  

Many2one

  • 介紹 : 在Many2one關係中,一個記錄(資料行)在另一個關聯表中對應到一個記錄。這個關係可以想像成一對多的反向。這通常用於建立父子關係,其中多個子記錄對應到同一個父記錄。
  • 例如,在Odoo的銷售模塊中,一個訂單(Sale Order)可能會關聯到一個客戶(Partner),這時你會使用Many2one字段。這裡是一個範例:
class SaleOrder(models.Model):
    _name = 'sale.order'
    
    partner_id = fields.Many2one('res.partner', string='Customer')
    # 其他字段...

Many2many

  • 介紹 : 在One2many關係中,一個記錄在另一個關聯表中可以對應到多個記錄。這是Many2one的反向關係。這通常用於建立父子關係,其中一個父記錄對應到多個子記錄。
  • 舉個例子,在Odoo的銷售模塊中,一個訂單(Sale Order)可以有多個訂單行(Sale Order Line),這時你會使用One2many字段。這裡是一個範例:
class SaleOrder(models.Model):
    _name = 'sale.order'
    
    order_line_ids = fields.One2many('sale.order.line', 'order_id', string='Order Lines')
    # 其他字段...

class SaleOrderLine(models.Model):
    _name = 'sale.order.line'
    
    order_id = fields.Many2one('sale.order', string='Order')
    # 其他字段...

One2many

  • 介紹 : 在Many2many關係中,兩個關聯表之間可以互相對應多個記錄。這是一個多對多的關係,通常需要使用一個中間表(關聯表)來建立這種關係。
  • 例如,在Odoo的產品模塊中,一個產品(Product)可以屬於多個產品類別(Product Category),同時一個產品類別也可以包含多個產品。這時你會使用Many2many字段。這裡是一個範例:
class ProductProduct(models.Model):
    _name = 'product.product'
    
    category_ids = fields.Many2many('product.category', 'product_category_rel', 'product_id', 'category_id', string='Categories')
    # 其他字段...

class ProductCategory(models.Model):
    _name = 'product.category'
    
    product_ids = fields.Many2many('product.product', 'product_category_rel', 'category_id', 'product_id', string='Products')
    # 其他字段...

上一篇
權限(0,0,{})~(6,0,[]) 可以如何應用
下一篇
補充 model 的繼承用法
系列文
Odoo 16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sunfly
iT邦新手 5 級 ‧ 2024-07-17 02:52:52

Many2many 和 One2many 的標題弄反了.

我要留言

立即登入留言