iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Odoo

Odoo16 入門介紹系列 第 16

Day16_odoo_Prototype Inheritance

  • 分享至 

  • xImage
  •  

Prototype_Inheritance

Prototype Inheritance(原型繼承)Odoo 使用Prototype Inheritance的概念來擴展或修改模型。這意味著可以創建一個新的模型,並將其原型設置為您想要擴展的現有模型,然後添加或修改需要的字段、方法和視圖。

https://ithelp.ithome.com.tw/upload/images/20230928/20163098TUZQ3Fxttm.png

1.彈性擴展:使用原型繼承,您可以擴展現有模型,同時保持原模型的完整性。
            這使得應對變化和特定需求變得更加靈活。
2.避免衝突: 您的自定義模型具有獨立的 _name 和 _description,這有助於避免可能的命名衝突或混淆。

3.模組化開發: 每個模型都有特定的功能,可以更容易地在多個專案中重複使用或在不同的模組之間共享。

繼承父類別並且不會影響父類別,擁有自己的DB_Table儲存record:

當我們希望我們創建的model擁有另一model的特性與功能,又希望她擁有自己的DB_Table時,我們可以使用Prototype Inheritance,在使用Prototype Inheritance時,我們必須先設定__manifest.py__,並且在__name欄位,我們宣告一個新的model名稱:

model.py

class BookNamePrototype(models.Model):
    _name = 'book.name.prototype'
    _description = "BookNamePrototype is inherited by BookName "
    _inherit = 'book.name'
    
    introduce = fields.Html(string='introduce',required='True')

__manifest.py__

......
 'depends': ['library'],
......

就像上面的例子,使用Prototype Inheritance我們不僅繼承了book.name的所有屬性,並且我們也同時擁有自己的DB_Table,而Prototpye InheritanceClass Inheritance最大的不同就在於,_name_description的宣告。

再來明天會介紹Inheritace中最特別,也最少用到的繼承方式,Delegation Inheritace,目前筆者只知道如何使用,但在實作上還欠缺經驗,它融合了Class InheritancePrototype Inheritance的特性。


上一篇
Day15_odoo_Class Inheritance
下一篇
Day17_odoo_Delegation Inheritance
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言