Prototype Inheritance(原型繼承)
Odoo 使用Prototype Inheritance
的概念來擴展或修改模型。這意味著可以創建一個新的模型,並將其原型設置為您想要擴展的現有模型,然後添加或修改需要的字段、方法和視圖。
1.彈性擴展:使用原型繼承,您可以擴展現有模型,同時保持原模型的完整性。
這使得應對變化和特定需求變得更加靈活。
2.避免衝突: 您的自定義模型具有獨立的 _name 和 _description,這有助於避免可能的命名衝突或混淆。
3.模組化開發: 每個模型都有特定的功能,可以更容易地在多個專案中重複使用或在不同的模組之間共享。
當我們希望我們創建的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 Inheritance
與Class Inheritance
最大的不同就在於,_name
與_description
的宣告。
再來明天會介紹Inheritace
中最特別,也最少用到的繼承方式,Delegation Inheritace
,目前筆者只知道如何使用,但在實作上還欠缺經驗,它融合了Class Inheritance
與Prototype Inheritance
的特性。