Openerp 继承物的形式

Openerp 继承物的形式,openerp,odoo,Openerp,Odoo,我创建了一个新的类fleet_代理,它从res.partner继承而来,没有任何问题 class fleet_agent(osv.Model): _name = 'fleet.agent' _inherit = ['res.partner'] _columns = { 'test': fields.char('Test', help='Test'), } 然后车队代理表单继承了基本表单。查看合作伙伴表单也没有问题 <record id="fleet_ag

我创建了一个新的类fleet_代理,它从res.partner继承而来,没有任何问题

class fleet_agent(osv.Model): 
    _name = 'fleet.agent'
    _inherit = ['res.partner']
    _columns = {
    'test': fields.char('Test', help='Test'),
}
然后车队代理表单继承了基本表单。查看合作伙伴表单也没有问题

<record id="fleet_agent_form" model="ir.ui.view"> 
            <field name="name">fleet.agent.form</field>
            <field name="model">fleet.agent</field>
            <field name="inherit_id" ref="base.view_partner_form" />
            <field name="arch" type="xml">
                <field name="state_id" position="before">
                    <field name="x" />
                </field>
            </field>
</record>

舰队、代理人、表格
舰队代理
我的问题是,此表单没有显示为view\u partner\u表单的格式,并且所有字段都没有任何顺序?

请尝试以下操作:

class fleet_agent(osv.Model): 
    _inherit = ['res.partner']
    _columns = {
    'test': fields.char('Test', help='Test'),
}

<record id="fleet_agent_form" model="ir.ui.view"> 
    <field name="name">fleet.agent.form</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form" />
    <field name="arch" type="xml">
        <field name="state_id" position="before">
            <field name="x" />
        </field>
    </field>
</record>

因此,您将通过基类的功能获得扩展的功能。

您通过扩展基类“res.partner”创建了一个新的模型“fleet.agent”。为了显示所有字段,您需要在xml中指定字段,或者通过删除“fleet.agent”并将字段添加到基“res.partner”来使用经典继承

class fleet_agent(osv.Model): 
    _inherit = 'res.partner'
    _columns = {
              'field': fields.char('Name', help='help'),
    }
在xml文件中:

<field name="model">fleet.agent</field>
fleet.agent
班级合作伙伴(model.model):
_继承='res.partner'
test=fields.Char(string='test',help='test'),
}
伙伴测试
合伙人

要将表复制到您的moule,您应该使用继承关键字,而不是继承。此外,您还必须复制基本模块的合作伙伴表单的视图定义并对其进行更改,扩展不会帮助您创建新表。

更新:有关操作系统继承方式的其他信息:

Update2:看起来你们走对了:有一种继承的方式:使用继承关键字并为新模型指定新的_名称。

  • 使用:
  • 从控制台升级模块:

  • 我想通过使用相同的base.view\u partner\u表单和新的fleet.agent字段,从res.partner模型创建一个新的类fleet.agent和新表。然后确定在python代码中定义
    \u name='fleet.agent'
    ,并定义
    \u inherits={res.partner':'fleet\u agent\u id'}
    在视图中,您可以访问res.partner的所有字段。您还需要提供车队代理id的字段定义。查看product.product类以获取参考及其视图,有
    product\u tmpl\u id
    正在引用
    product.template
    。我想通过继承并使用相同的base.view\u partner\u表单和新的fleet.agent字段,从res.partner模型创建一个新的类fleet.agent和新表。
    <field name="model">fleet.agent</field>
    
    class Partner(model.Model): 
        _inherit = 'res.partner'
        test = fields.Char(string='Test', help='Test'),
    }
    
    <record id="fleet_agent_form" model="ir.ui.view"> 
                <field name="name">partner.test</field>
                <field name="model">res.partner</field>
                <field name="inherit_id" ref="base.view_partner_form" />
                <field name="arch" type="xml">
                        <field name="test" />
                </field>
    </record>
    
    class res_partner(models.Model):
        _inherit = 'res.partner'
        test = fields.Char(string='test')`
    
    ./odoo-bin -u [module_name] -c [configuration_file