在 Odoo 中,delegation inheritance
是一種模型(model)繼承的方式,它允許您將一個模型的部分功能委託給另一個模型。這種繼承方式特別適用於需要在多個模型之間共享通用功能的情況,同時保持代碼的結構清晰和可維護性。
1.功能模組化: Delegation Inheritance 允許您將一個模型的特定功能模組委託給其他模型
,使代碼更具模組化。這有助於提高代碼的可重用性和可維護性。
2.繼承父模型的特性: 委託模型不僅可以擁有自己的字段和方法,還可以繼承父模型的特性
,並對其進行擴展或修改。這使得您可以在不破壞現有功能的情況下進行自定義。
3.委託字段(Delegated Fields):您可以將一個模型的字段委託給另一個模型。這表示某個模型
擁有某個字段的所有特性,而不需要再次定義該字段。
這對於共享通用字段非常有用。
4.委託方法(Delegated Methods):您可以將一個模型的方法委託給另一個模型,以共享該方法的
功能。這樣,多個模型可以重用相同的方法實現。
當我們希望我們所創建的model,既可以擁有自己的DB_Table,同時可以將新建record存在父類別的DB_Table中,
在這種特殊的情況,我們可以使用Delegation Inheritance
:
class News(models.Model):
_name = 'news'
_description = 'Delegation Inheritance Demo'
_inherits = {'res.partner': 'partner_id'}
partner_id = fields.Many2one('res.partner', string='Partner2', required=True, ondelete='cascade')
first_name = fields.Char(string='First Name', size=25)
__manifest.py__
......
'depends': ['library'],
......
使用Delegation Inheritance
的時候特別要注意的地方就是在inherits
,而且我們也可以發現,在宣告inherits
時,我們使用的是字典的型態,這代表了在Delegation Inheritance
中,我們指定了patner_id
來與父類別同步資料,並且在這類的宣告上,一定要使用Many2one
的欄位。