iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Odoo

Odoo 魔法學院: 一步一腳印帶你成為客製化大師系列 第 16

[Day16] 書與出版社的關聯:One-to-Many, Many-to-One

  • 分享至 

  • xImage
  •  

這邊用書本和出版社來示例 Relationship 資料:One-to-Many, Many-to-One

Many-to-one:書 對應 出版社

從書本的視角,我們也可以說 Book Table 的視角來看 Publisher Table 出版社,假設我們有 100 本書,但只有 3 家出版社,每一本書只會有一個出版社,也就是很多書籍 (many) 會指到一個出版社 (one), many-to-one

#library_app/models/library_book.py
class Book(models.Model):
    ...
    publisher_id = fields.Many2one("res.partner", "Publisher")

第一個參數是相關聯的 Model,也就是出版社 (res.partner 是 Contact 模組的,可以指人或公司,這邊指得是公司)
第二個參數就是欄位標籤

One-to-many: 出版社 對應 出版書籍

反向來看出版社,一家出版社可以出版數本書籍,假設其中一家天天出版社,出版了 10 本書籍,也就是 出版社(one) 出版數本書籍 (many),one-to-many

首先先繼承 res.partner (_inherit),再來連結 書本id 和 出版社 id。

#library_app/models/res_partner.py
class Partner(models.Model):
    _inherit = "res.partner"

    published_book_ids = fields.One2many(
        "library.book",
        "publisher_id",
        string="Published Books",
    )

fields.One2many 第一個參數是對應的 Model,第二個是用哪個關聯變數作為指向 (反向指標),最後依然是欄位標籤

Btw, 別忘了這個 ;)

#library_app/models/__init__.py
...
from . import res_partner

上一篇
[Day15] 圖書館系統:更實務的資料欄位擴充
下一篇
[Day17] 使用SQL來檢查資料正確性+ odoo base models
系列文
Odoo 魔法學院: 一步一腳印帶你成為客製化大師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言