_inherit
如果设置了_name,则为要继承的父模型的名称
如果未设置_name,则为要扩展的单个模型的名称
创建父类
class amos(models.Model):
_name = 'amos'
name = fields.Char(string='名称', copy=False, )
继承父类
class amos_c(models.Model):
_inherit = 'amos'
name_c = fields.Char(string='C', copy=False, )
渲染表单
<record id="form_amos" model="ir.ui.view">
<field name="name">amos.form</field>
<field name="model">amos</field>
<field name="arch" type="xml">
<form string="表单">
<sheet>
<div class="oe_button_box" name="button_box">
</div>
<group>
<group>
<field name="name" />
<field name="name_c" />
</group>
<group>
</group>
</group>
</sheet>
</form>
</field>
</record>
我们可以在父类中直接使用子类的字段
编辑
_inherits
将父业务对象的名称映射到要使用的相应外键字段的名称,实现基于组合的继承:新模型公开继承的模型的所有字段,但不存储任何字段:值本身仍存储在链接的记录上。如果在inherits-ed模型中定义了多个具有相同名称的字段,则继承的字段将对应于最后一个字段(按继承列表顺序)。
创建子类
class amos_a(models.Model):
_name = 'amos.a'
_inherits = {'amos': 'c_id'}
ccc = fields.Char(string='CCCC')
c_id = fields.Many2one(comodel_name='amos', ondelete='cascade', required=True)
渲染子类
<record id="tree_amos_a" model="ir.ui.view">
<field name="name">amos.a.tree</field>
<field name="model">amos.a</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree string="列表">
<field name="name" />
<field name="ccc" />
<field name="name_c" />
</tree>
</field>
</record>
我们在子类添加信息会自动添加到父类中
欢迎加群一起讨论DTCloud 4实施开发。
群号:557402829