美文网首页OdooOdoo程序员
Odoo10开发教程二(基本视图)

Odoo10开发教程二(基本视图)

作者: luohuayong | 来源:发表于2017-02-25 10:00 被阅读4228次

    基本视图

    视图定义了模型数据的呈现方式。不同的视图类型决定了数据的可视化方式(记录行列表、图形化聚合)。视图可以通过类型(比如partners列表)或id被请求。对于一般请求,将被对应类型的最低优先级视图响应(每个类型的最低优先级视图是该类型的默认视图)。视图继承允许更改在其他地方声明的视图(添加或删除内容)。

    通用视图声明

    视图通过一个ir.ui.view的模型记录来声明。视图类型由arch字段的根元素隐含定义:

    <record model="ir.ui.view" id="view_id">
        <field name="name">view.name</field>
        <field name="model">object_name</field>
        <field name="priority" eval="16"/>
        <field name="arch" type="xml">
            <!-- view content: <form>, <tree>, <graph>, ... -->
        </field>
    </record>
    

    警告
    因为视图的内容是XML,所以arch字段必须被声明为type="xml"以正确解析。

    树视图

    树视图也被称为列表视图,以表格形式显示记录。根元素是<tree>.最简单的树视图是在表格中列出所有字段(每列对应一个字段):

    <tree string="Idea list">
        <field name="name"/>
        <field name="inventor_id"/>
    </tree>
    

    表单视图

    表单视图通常用来建立和编辑单条记录。根元素是<form>,由结构元素(groups,notebooks)和交互元素(button,fields)组成。

    <form string="Idea form">
        <group colspan="4">
            <group colspan="2" col="2">
                <separator string="General stuff" colspan="2"/>
                <field name="name"/>
                <field name="inventor_id"/>
            </group>
    
            <group colspan="2" col="2">
                <separator string="Dates" colspan="2"/>
                <field name="active"/>
                <field name="invent_date" readonly="1"/>
            </group>
    
            <notebook colspan="4">
                <page string="Description">
                    <field name="description" nolabel="1"/>
                </page>
            </notebook>
    
            <field name="state"/>
        </group>
    </form>
    

    练习使用XML定制窗体视图
    建立课程对象的表单视图,显示课程的名称和描述字段。

    openacademy/views/openacademy.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <odoo>
        <data>
            <record model="ir.ui.view" id="course_form_view">
                <field name="name">course.form</field>
                <field name="model">openacademy.course</field>
                <field name="arch" type="xml">
                    <form string="Course Form">
                        <sheet>
                            <group>
                                <field name="name"/>
                                <field name="description"/>
                            </group>
                        </sheet>
                    </form>
                </field>
            </record>
    
            <!-- window action -->
            <!--
                The following tag is an action definition for a "window action",
    

    练习notebook结构元素
    在课程的表单视图中,将描述字段放在一个选项卡中,然后再添加选项卡放置其它字段。修改后的课程表单视图如下:

    openacademy/views/openacademy.xml

                        <sheet>
                            <group>
                                <field name="name"/>
                            </group>
                            <notebook>
                                <page string="Description">
                                    <field name="description"/>
                                </page>
                                <page string="About">
                                    This is an example of notebooks
                                </page>
                            </notebook>
                        </sheet>
                    </form>
                </field>
    

    表单视图也可以使用纯HTML来进行更灵活的布局

    <form string="Idea Form">
        <header>
            <button string="Confirm" type="object" name="action_confirm"
                    states="draft" class="oe_highlight" />
            <button string="Mark as done" type="object" name="action_done"
                    states="confirmed" class="oe_highlight"/>
            <button string="Reset to draft" type="object" name="action_draft"
                    states="confirmed,done" />
            <field name="state" widget="statusbar"/>
        </header>
        <sheet>
            <div class="oe_title">
                <label for="name" class="oe_edit_only" string="Idea Name" />
                <h1><field name="name" /></h1>
            </div>
            <separator string="General" colspan="2" />
            <group colspan="2" col="2">
                <field name="description" placeholder="Idea description..." />
            </group>
        </sheet>
    </form>
    

    搜索视图

    搜索视图可对列表视图(或者其它聚合视图)中的字段进行搜索。搜索视图的根元素是<search>,内容包含所有可以搜索的字段。

    <search>
        <field name="name"/>
        <field name="inventor_id"/>
    </search>
    

    如果在模型中没有定义搜索视图,Odoo会生成一个只包含name字段的搜索视图。

    练习搜索课程
    通过标题和描述来搜索课程。

    openacademy/views/openacademy.xml

    </field>
            </record>
    
            <record model="ir.ui.view" id="course_search_view">
                <field name="name">course.search</field>
                <field name="model">openacademy.course</field>
                <field name="arch" type="xml">
                    <search>
                        <field name="name"/>
                        <field name="description"/>
                    </search>
                </field>
            </record>
    
            <!-- window action -->
            <!--
                The following tag is an action definition for a "window action",
    

    相关文章

      网友评论

      • creatorkk:楼主有完整的文件吗,按这个做,总是报错

      本文标题:Odoo10开发教程二(基本视图)

      本文链接:https://www.haomeiwen.com/subject/vfnywttx.html