This is the documentation for older versions of Odoo (formerly OpenERP).

See the new Odoo user documentation.

See the new Odoo technical documentation.

Specify the views you want to use

在几种情况下你相比于默认的视图更想用指定的视图:

  • 如果一个对象有好几种表单或是列表视图。

  • 如果你想要通过使用关系字段(如one2many)来更改表单或是列表视图。

Using the priority field

这个字段在视图定义中是可用的,默认为16。在默认情况下,OpenERP用最高优先级(更小的值)的视图来显示model。比如,想象我们的一个model有两个视图。model client有两个字段:firstname和lastname。我们将会定义两个视图,一个用于首先显示firstname,另一个用于首先显示lastname。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!--
    Here is the first view for the model 'client'.
    We don't specify a priority field, which means
    by default 16.
-->
<record model="ir.ui.view" id="client_form_view_1">
    <field name="name">client.form.view1</field>
    <field name="model">client</field>
    <field name="type">form</fiel>
    <field name="arch" type="xml">
        <field name="firstname"/>
        <field name="lastname"/>
    </field>
</record>

<!--
    A second view, which show fields in an other order.
    We specify a priority of 15.
-->
<record model="ir.ui.view" id="client_form_view_2">
    <field name="name">client.form.view2</field>
    <field name="model">client</field>
    <field name="priority" eval="15"/>
    <field name="type">form</fiel>
    <field name="arch" type="xml">
        <field name="lastname"/>
        <field name="firstname"/>
    </field>
</record>

现在,OpenERP每次为对象client显示表单视图,它都有两个视图选择。它一直选择的是第二个,因为这个有高优先级。除非你告诉它选择第一个。

Specify per-action view

为了说明这一点,我们将会创建2个菜单来为client对象显示表单视图。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!--
    This action open the default view (in our case,
    the view with the highest priority, the second one)
-->
<record
    model="ir.actions.act_window"
    id="client_form_action">
    <field name="name">client.form.action</field>
    <field name="res_model">client</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
</record>

<!--
    This action open the view we specify.
-->
<record
    model="ir.actions.act_window"
    id="client_form_action1">
    <field name="name">client.form.action1</field>
    <field name="res_model">client</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    <field name="view_id" ref="client_form_view_1"/>
</record>

<menuitem id="menu_id" name="Client main menu"/>
<menuitem
    id="menu_id_1"
    name="Here we don't specify the view"
    action="client_form_action" parent="menu_id"/>
<menuitem
    id="menu_id_1"
    name="Here we specify the view"
    action="client_form_action1" parent="menu_id"/>

你可以看到第19行,我们特定了一个视图。这意味着当我们打开第二个菜单时,OpenERP将会使用视图client_form_view_1,而不管它的优先级。

注解

Remember to use the module name (module.view_id) in the ref attribute if you are referring to a view defined in another module.