這邊用書本和出版社來示例 Relationship 資料:One-to-Many, 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 模組的,可以指人或公司,這邊指得是公司)
第二個參數就是欄位標籤
反向來看出版社,一家出版社可以出版數本書籍,假設其中一家天天出版社,出版了 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