Skip to content

XML Views

Form Views

Basic Form View

xml
<form>
    <sheet>
        <group>
            <field name="name"/>
            <field name="date"/>
            <field name="state"/>
        </group>
    </sheet>
</form>

Form View with Notebook

xml
<form>
    <sheet>
        <group>
            <field name="name"/>
            <field name="date"/>
        </group>
        <notebook>
            <page string="First Tab">
                <group>
                    <field name="field1"/>
                    <field name="field2"/>
                </group>
            </page>
            <page string="Second Tab">
                <group>
                    <field name="field3"/>
                    <field name="field4"/>
                </group>
            </page>
        </notebook>
    </sheet>
</form>

Form View with Statusbar

xml
<form>
    <header>
        <field name="state" widget="statusbar"/>
    </header>
    <sheet>
        <group>
            <field name="name"/>
            <field name="date"/>
        </group>
    </sheet>
</form>

Tree Views

Basic Tree View

xml
<tree>
    <field name="name"/>
    <field name="date"/>
    <field name="state"/>
</tree>

Tree View with Decorations

xml
<tree decoration-info="state == 'draft'" decoration-success="state == 'done'">
    <field name="name"/>
    <field name="date"/>
    <field name="state"/>
</tree>

Tree View with Buttons

xml
<tree>
    <field name="name"/>
    <field name="date"/>
    <field name="state"/>
    <button name="action_confirm" string="Confirm" type="object" 
            attrs="{'invisible': [('state', '!=', 'draft')]}"/>
</tree>

Search Views

Basic Search View

xml
<search>
    <field name="name"/>
    <field name="date"/>
    <filter string="Draft" name="draft" domain="[('state', '=', 'draft')]"/>
    <group expand="0" string="Group By">
        <filter string="State" name="state" context="{'group_by': 'state'}"/>
    </group>
</search>

Advanced Search View

xml
<search>
    <field name="name"/>
    <field name="partner_id"/>
    <separator/>
    <filter string="My Draft" name="my_draft" 
            domain="[('state', '=', 'draft'), ('user_id', '=', uid)]"/>
    <filter string="Confirmed" name="confirmed" 
            domain="[('state', '=', 'confirmed')]"/>
    <separator/>
    <group expand="0" string="Group By">
        <filter string="State" name="state" context="{'group_by': 'state'}"/>
        <filter string="User" name="user" context="{'group_by': 'user_id'}"/>
    </group>
</search>

Calendar Views

Basic Calendar View

xml
<calendar string="Calendar" date_start="start_date" date_stop="end_date">
    <field name="name"/>
    <field name="partner_id"/>
</calendar>

Calendar View with Color

xml
<calendar string="Calendar" date_start="start_date" date_stop="end_date" 
          color="partner_id" quick_add="false">
    <field name="name"/>
    <field name="partner_id"/>
</calendar>

Kanban Views

Basic Kanban View

xml
<kanban>
    <field name="name"/>
    <field name="state"/>
    <templates>
        <t t-name="kanban-box">
            <div class="oe_kanban_global_click">
                <strong><field name="name"/></strong>
                <div><field name="state"/></div>
            </div>
        </t>
    </templates>
</kanban>

Kanban View with Image

xml
<kanban>
    <field name="name"/>
    <field name="image"/>
    <templates>
        <t t-name="kanban-box">
            <div class="oe_kanban_global_click">
                <img t-if="record.image.raw_value" 
                     t-att-src="image_url('module', 'image', record.image.raw_value)"/>
                <strong><field name="name"/></strong>
            </div>
        </t>
    </templates>
</kanban>

Common Attributes

Field Attributes

xml
<field name="field_name" 
       readonly="1"
       required="1"
       invisible="1"
       nolabel="1"
       placeholder="Enter value"
       help="Help text"
       widget="many2one"
       options="{'no_create': True}"
       class="oe_highlight"/>

Group Attributes

xml
<group string="Group Title" 
       col="2"
       colspan="2"
       colspan="4"
       class="oe_subtotal_footer_separator">
    <field name="field1"/>
    <field name="field2"/>
</group>

Button Attributes

xml
<button name="action_method" 
        string="Button Text"
        type="object"
        class="oe_highlight"
        icon="fa-check"
        attrs="{'invisible': [('state', '!=', 'draft')],
                'readonly': [('state', '=', 'done')]}"/>

Inheritance

View Inheritance

xml
<record id="view_form_inherit" model="ir.ui.view">
    <field name="name">model.form.inherit</field>
    <field name="model">model.name</field>
    <field name="inherit_id" ref="base_view_id"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='name']" position="after">
            <field name="new_field"/>
        </xpath>
    </field>
</record>

Multiple Inheritance

xml
<record id="view_form_inherit_multiple" model="ir.ui.view">
    <field name="name">model.form.inherit.multiple</field>
    <field name="model">model.name</field>
    <field name="inherit_id" ref="base_view_id"/>
    <field name="mode">primary</field>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='name']" position="after">
            <field name="new_field"/>
        </xpath>
    </field>
</record>