ODOO视图

视图(Views)定义了模型数据展示的方式。每种类型的视图(View)提供了一种可视化模式(列表、汇总图表等)。可以通过视图的(Views)类型或者指定的标识来调用视图(View)。通过类型调用视图,如果存在多个相同类型的视图,那么依据优先级由低到高选择。

视图继承 允许修改视图布局及内容。

视图定义

一个视图是由一个 ir.ui.view 模型数据记录定义,视图类型由 fieldarch 属性定义。

<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 Views

树型视图也被称为列表视图(List Views),以表格方式显示数据。他的根元素是<tree>。最简单的树型视图形式就是利用一个表格显示数据,每个字段作为一列。

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

表单视图-Form Views

表单视图用于建立和编辑单一的数据记录。他的根元素是 <form>。表单视图可以包含更复杂的元素,例如;分组组件、备注框、交互元素(按钮、输入框)等。

<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>

表单视图练习:2-1

定义Course的表单视图,展示课程的名称和描述

openacademy/views/openacademy.xml

表单视图练习-备注:2-2

将Course的表单视图中的 “description”字段放在一个标签页中。

openacademy/views/openacademy.xml

表单视图还可以使用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 Views

搜索视图用于定义列表视图的搜索字段以及其他的聚合视图,他的根元素是<search>,由可用于搜索的字段组成。

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

如果未指定搜索视图,odoo自动生成一个搜索视图,并且只允许使用name字段进行搜索。

搜索视图练习:2-3

定义Course的搜索视图,允许按照课程的title和description进行搜索。

openacademy/views/openacademy.xml

自定义模块的安装和运行

至此,应该可以安装和运行OpenAcademy模块。

$ ./odoo-bin --addons-path=addons,myaddons
  1. 进入odoo 的 settings 页面,在最右侧选择进入开发调试模式,Activate the developer mode 或者 Activate the developer mode (with assets);
  2. 进入odoo 的 apps 页面,在左侧的导航菜单中选择 “Update Apps List” 功能,然后在提示页面中选择 “Update“ 按钮;
  3. 选择 “Apps” 导航菜单,进入 Apps 页面,去掉搜索框中的 “Apps” 搜索条件(缺省是搜索Apps,但我们开发的是Module);
  4. 在搜索框中输入 “open”,然后进行搜索,应该可以搜索到 “Open Academy”模块,点击 “Install” 安装;
  5. 在odoo菜单中寻找 Open Academy菜单项,点击进入相应的页面,查看运行结果;

results matching ""

    No results matching ""