宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

ODOO12图书项目视图层
  • 上传者: Administrator
  • 上传时间:2022年11月14日 02时25分17秒
  • 资源大小:10M
  • 下载点数:免费
资料简介 相关下载 请喝咖啡

    视图层为用户界面的描述,视图用 XML 定义,由网页客户端框架生成数据感知的 HTML 视图。可用菜单项开启渲染视图的操作。比如,Users 菜单项处理一个同样名为 Users 的操作,然后渲染一系列视图。有多种可用视图类型,如 list(因历史原因也称为 tree)列表视图和 form表单视图,以及包含过滤项的右上角搜索框由 search 搜索视图定义。
    Odoo 开发指南写到定义用户界面的 XML 文件应放在views/子目录中。接下我们来创建图书应用的用户界面。下面我们会逐步改进并更新模块来使更改生效。
    添加菜单项
    现在有了存储数据的模型,需要添加到用户界面中。首先要做的就是添加相应菜单项。编辑views/library_menu.xml文件,在 XML 元素中定义菜单项以及执行的操作:

    <!-- Action to open the Book list -->
    <act_window id="action_library_book"
    name="Library Books"
    res_model="library.book"
    view_mode="tree,form"/>
    <!-- Menu item to open the Book list -->
    <menuitem id="menu_library_book"
    name="Books"
    parent="menu_library"
    action="action_library_book"/>
    

    用户界面,包括菜单项和操作,存储在数据表中。在安装或升级插件模块时,XML文件会将这些定义载入数据库中的数据文件。以上代码是一个 Odoo 数据文件,表示两条添加到 Odoo 的记录:

    • <act_window>元素定义客户端窗口操作,它按顺序通过启用列表和表单视图打开library.book 模型
    • <menuitem>定义一个调用前面定义的action_library_book操作的顶级菜单项
      现在再次升级模块来让修改生效。然后刷新浏览器页面,就可以看到Library顶级菜单,并包含一个子菜单项。点击该菜单会显示一个基本列表视图,记录可通过一个自动生成的表单视图进行编辑。点击创建按钮即可查看
      在这里插入图片描述
      虽然我们还没有定义用户界面视图,自动生成的列表视图和表单视图也可以使用,允许我们马上编辑数据。
      创建表单视图
      所有的视图都存储在数据库ir.ui.view模型中。为模型添加视图,我们在 XML文件中声明元素来描述视图,在模块安装时 XML 文件会被载入数据库。
      添加views/book_view.xml文件来定义表单视图:
    <?xml version="1.0"?>
    <odoo>
    <record id="view_form_book" model="ir.ui.view">
    <field name="name">Book Form</field>
    <field name="model">library.book</field>
    <field name="arch" type="xml">
    <form string="Book">
    <group>
    <field name="name" />
    <field name="author_ids" widget="many2many_tags" />
    <field name="publisher_id" />
    <field name="date_published" />
    <field name="isbn" />
    <field name="active" />
    <field name="image" widget="image" />
    </group>
    </form>
    </field>
    </record>
    </odoo>
    

    这个ir.ui.view记录有三个字段值:name, model和 arch。另一个重要元素是记录 id,它定义了一个可在其它记录中引用的XML ID标识符。这是library.book 模型的视图,名为Book Form。这个名称仅用于提供信息,无需唯一,但应易于分辨所引用的记录。其实可以完全省略 name,这种情况下会自动按模型名和视图类型来生成。
    最重要的字段是arch,它包含了视图的定义,在 XML 代码中我们做了高亮显示。标签定义了视图类型并包含视图结构。
    此处中包含了要在表单中显示的字段。这些字段会自动使用默认的组件,如 date 字段使用日期选择组件。有时我们要使用不同的组件,如以上代码中的author_ids使用了显示标签列表的组件,image字段使用处理图片的相应组件。
    不要忘记在声明文件的 data 中加入新建文件,否则我们的模块将无法识别到并加载该文件:

    'data': [
    'security/library_security.xml',
    'security/ir.model.access.csv',
    'views/library_menu.xml',
    'views/book_view.xml',
    ],
    

    要使修改载入 Odoo 数据库就需要更新模块。需要重新加载页面来查看修改效果,可以再次点击菜单项或刷新网页(大多数浏览器中快捷键为 F5)。
    在这里插入图片描述
    业务文件表单视图
    上面的部分创建了一个基础表单视图,还可以做一些改进。对于文件模型,Odoo 有一个模拟纸张的展示样式,表单包含两个元素:

    来包含操作按钮和来包含数据字段。可以修改上一部分的基础定义为:

    <form string="Book">
    <header>
    <!-- Buttons will go here -->
    </header>
    <sheet>
    <!-- Content goes here: -->
    <group>
    <field name="name" />
    <field name="author_ids" widget="many2many_tags" />
    <field name="publisher_id" />
    <field name="date_published" />
    <field name="isbn" />
    <field name="active" />
    <field name="image" widget="image" />
    </group>
    </sheet>
    </form>
    

    添加操作按钮
    表单可带有执行操作的按钮。这些按钮可用于运行窗口操作,如打开另一个表单或执行模型中定义的 Python 方法。按钮可以放在表单的任意位置,但对于文件样式表单,推荐的位置是

    中。
    我们的应用会添加图书 ISBN,和一个用于检测 ISBN 有效性的按钮。代码将放在 Book 模型中,我们将该方法命名为button_check_isbn()。虽然还未创建该方法,我们现在可以在表单中先添加相应按钮

    <header>
    <button name="button_check_isbn" type="object"
    string="Check ISBN" />
    </header>
    

    一个按钮的基本属性有:

    • string:定义按钮显示文本
    • type:执行的操作类型
    • name:操作的标识符
    • class:应用 CSS 样式的可选属性,与 HTML 相同
      在这里插入图片描述
      使用组来组织表单
      标签可用于组织表单内容。在元素内加会在外层组中创建一个两列布局。推荐在group 元素中添加 name 属性,更易于其它模块对其进行继承。我们使用该标签来组织内容,修改内容如下:
    <sheet>
    <group name="group_top">
    <group name="group_left">
    <field name="name" />
    <field name="author_ids" widget="many2many_tags" />
    <field name="publisher_id" />
    <field name="date_published" />
    </group>
    <group name="group_right">
    <field name="isbn" />
    <field name="active" />
    <field name="image" widget="image" />
    </group>
    </group>
    </sheet>
    

    完整表单视图
    此时library.book的表单视图代码如下:

    <form>
    <header>
    <button name="check_isbn" type="object"
    string="Check ISBN" />
    </header>
    <sheet>
    <group name="group_top">
    <group name="group_left">
    <field name="name" />
    <field name="author_ids" widget="many2many_tags" />
    <field name="publisher_id" />
    <field name="date_published" />
    </group>
    <group name="group_right">
    <field name="isbn" />
    <field name="active" />
    <field name="image" widget="image" />
    </group>
    </group>
    </sheet>
    </form>
    

    按钮还无法使用,需要先添加业务逻辑。
    在这里插入图片描述
    添加列表视图和搜索视图
    以列表模式显示模型需要使用视图。树状视图可以按层级显示,但大多数情况下仅需显示为普通列表。
    可以在book_view.xml文件中添加视图:

    <record id="view_tree_book" model="ir.ui.view">
    <field name="name">Book List</field>
    <field name="model">library.book</field>
    <field name="arch" type="xml">
    <tree>
    <field name="name"/>
    <field name="author_ids" widget="many2many_tags" />
    <field name="publisher_id"/>
    <field name="date_published"/>
    </tree>
    </field>
    </record>
    

    以上定义了一个含有四列的列表:name, author_ids, publisher_id和 date_published。
    在这里插入图片描述
    在该列表的右上角,Odoo 显示了一个搜索框。搜索的字段和可用过滤器也由视图定义。同样还在book_view.xml文件中添加:

    <record id="view_search_book" model="ir.ui.view">
    <field name="name">Book Filters</field>
    <field name="model">library.book</field>
    <field name="arch" type="xml">
    <search>
    <field name="publisher_id"/>
    <filter name="filter_inactive"
    string="Inactive"
    domain="[('active','=',True)]"/>
    <filter name="filter_active"
    string="Active"
    domain="[('active','=',False)]"/>
    </search>
    </field>
    </record>
    

    元素定义在搜索框中输入搜索的字段,这里添加了publisher_id自动提示出版商字段。元素添加预定义过滤条件,用户通过点击来切换,它使用了特殊的语法.
    在这里插入图片描述


    本资料从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: