Odoo - 如何从其他模型正确复制视图

时间:2015-01-29 14:20:43

标签: inheritance view openerp openerp-8

我有一个模特。例如,让我们说:

class my_model(models.Model):
    _name = 'my.model'

    field1 = fields.Char('name')

它有树和表单视图。两者都运作正常。

现在我创建了新模型,复制旧模型:

class my_model_template(models.Model):
    _name = 'my.model.template'
    _inherit = 'my.model'

现在直到这一部分,一切都很好。它复制旧模型中的所有内容。但是谈到观点......

所以我为'my.model.template'视图(树和表单)做了这个:

<record id="view_my_model_template_tree" model="ir.ui.view">
    <field name="name">my.model.template.tree</field>
    <field name="model">my.model.template</field>
    <field name="inherit_id" ref="my_model.view_my_model_tree"/>
    <field name="arch" type="xml">
        <tree string="My Model" position="attributes">
            <attribute name="string">My Model Template</attribute>
        </tree>
    </field>
</record>

<record id="view_my_model_template_form" model="ir.ui.view">
    <field name="name">my.model.template.form</field>
    <field name="model">my.model.template</field>
    <field name="inherit_id" ref="my_model.view_my_model_form"/>
    <field name="arch" type="xml">
        <form string="My Model" position="attributes">
            <attribute name="string">My Model Template</attribute>
        </form>
    </field>
</record>

但它没有正确复制视图。例如,树视图仅显示名称字段,在原始视图中它有四个字段。在表单视图中,它似乎显示所有字段,但这些字段位于某个随机位置,没有任何格式(在旧视图中)。

1 个答案:

答案 0 :(得分:1)

您需要指定要为哪种视图模式打开哪个视图。因为当您复制另一个模型的视图时,它似乎无法自动找到正确的视图(即使每个模式只定义了一个)

<record model="ir.actions.act_window.view" id="action_my_model_template_tree">
    <field name="sequence" eval="1"/>
    <field name="view_mode">tree</field>
    <field name="view_id" ref="view_my_model_template_tree"/>
    <field name="act_window_id" ref="action_my_model_template"/>
</record>     

<record model="ir.actions.act_window.view" id="action_my_model_template_form">
    <field name="sequence" eval="1"/>
    <field name="view_mode">form</field>
    <field name="view_id" ref="view_my_model_template_form"/>
    <field name="act_window_id" ref="action_my_model_template"/>
</record> 

注意 此外,如果您将在其他模型视图中的任何位置使用此类型号,并且您尝试直接从该其他视图打开它的形式,它也将打开&#34;未格式化的&#34;视图。要绕过这一点,您需要指定要打开的视图:

例如:

<record id="view_my_other_model_form" model="ir.ui.view">
    <field name="name">my.other.model.form</field>
    <field name="model">my.other.model.</field>
    <field name="arch" type="xml">
        <form string="My Other Model">
            <field name="my_model_template_id" 
                context="{'form_view_ref': 'my_model_template.view_my_model_template_form'}"/>
        </form>
    </field>
</record>