模型继承
Odoo提供了两种继承机制,以模块化方式扩展现有模型。
第一个继承机制允许一个模块修改另一个模块中定义一个模型的行为:
- 将字段添加到模型中
- 重写模型上字段的定义
- 向模型添加约束
- 将方法添加到模型中
- 重写模型上的现有方法
第二继承机制(委托)允许将模型的每个记录链接到父模型中的记录,并提供对父记录的字段的透明访问。
视图继承
代替修改现有的视图(通过重写它们),Odoo提供的视图继承让子视图“扩展”的视图应用在顶部的根视图,并可以从父视图中添加或删除内容。
扩展视图使用inherit_id
字段引用它的父类,而不是单个视图,其arch
字段由任意数量的xpath
元素组成,它们选择和改变父视图的内容:
expr
在父视图中XPath表达式选择单个元素。如果不匹配元素或多于一个,则会引发错误
position
应用于匹配元素的操作:
inside
在匹配元素的末尾追加xpath的body
replace
替换使用xpath的body的匹配元素,替换任何 $0
节点发生在使用原始元素的新的body中
before
在匹配元素之前插入xpath的body作为兄弟
after
匹配元素之后插入xpath的body作为兄弟
attributes
使用在xpath的body中的特殊的attribute
元素改变匹配元素的属性