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

基本视图

视图定义了模型数据的呈现方式。不同的视图类型决定了数据的可视化方式(记录行列表、图形化聚合)。视图可以通过类型(比如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",
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,321评论 19赞 139
  • 高级视图 树视图 树视图可以采用辅助属性来进一步自定义其行为:decoration-{$name}允许根据对应记录...
    luohuayong阅读 7,326评论 3赞 11
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,847评论 25赞 708
  • 其实每个国家都有自己的法律,这就是他们的规则。若有人一旦促碰到这底线那后果就是得到惩罚。 那是大方面的,那我们就说...
    oscar双头木阅读 194评论 0赞 0
  • 浮生所梦阅读 178评论 0赞 0

友情链接更多精彩内容