宜兴通达竭诚为您服务。

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

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

    模块中视图和其它数据构件也可通过继承来修改。就视图而言,通常需要添加功能。视图的展示结构在 arch 字段中使用 XML定义。这一 XML 数据可通过定位到所需修改的地方来进行继承,然后声明需执行的操作,如在该处添加 XML 元素。对于剩余的数据元素,它们代表写入数据库中的记录,继承模型可通过写操作来修改它们的值。
    继承视图
    表单、列表和搜索视图通过arch XML结构定义。要继承视图,就要一种修改 XML 的方式,也即定位 XML 元素然后对该处进行修改。视图继承的 XML 记录和普通视图中相似,多一个 inherit_id属性来引用所要继承的视图。下面我们来继承图书视图并添加is_available字段。
    首先要查找待继承的视图的XML ID,通过设置>技术>用户界面>视图菜单来查看。图书表单的XML ID是library_app.view_form_book。然后还要找到要插入修改的XML元素,我们在 ISBN 字段之后添加Is Available?通常通过name 属性定位元素,此处为<field name=”isbn” />
    在这里插入图片描述
    我们添加views/book_view.xml文件来继承 Partner 视图,加入如下内容:

    <?xml version="1.0"?>
    <odoo>
    <record id="view_form_book_extend" model="ir.ui.view">
    <field name="name">Book: add Is Available? field</field>
    <field name="model">library.book</field>
    <field name="inherit_id" ref="library_app.view_form_book"/>
    <field name="arch" type="xml">
    <field name="isbn" position="after">
    <field name="is_available" />
    </field>
    </field>
    </record>
    </odoo>
    

    以上代码中,我们高亮显示了继承相关的元素。inherit_id记录字段通过 ref 属性指向继承视图的外部标识符,我们将在后面讨论外部标识符详情。视图使用 XML 定义并存储在结构字段 arch 中。要继承一个视图,先定位要扩展的节点,然后执行要做的操作,如添加 XML 元素。
    定位节点的最简单方法是使用唯一标识属性,通常是 name。然后添加定位属性,声明要做的修改。本例中继承节点是name=”isbn”元素,修改是在选定元素后加一段 XML:

    <field name="isbn" position="after">
    <!-- Changed content goes here -->
    </field>
    

    除string 属性外的任意 XML 元素和属性可作为继承节点,字符串属性会被翻译成用户所使用的语言,因此不能作为节点选择器。
    一旦 XML 节点被选为继承点,需要指明要执行的继承操作。这通过 position 属性实现:

    • inside(默认值):在所选节点内添加内容,这一节点应是或一类的容器
    • after:在选定节点之后向父节点添加内容
    • before:在选定节点之前向父节点添加内容
    • replace:替换所选节点。若使用空元素则会删除该元素。Odoo 之后还允许使用其它标记来包裹元素,通过在内容中使用$0来表示被替换的元素。
    • attributes:修改匹配元素属性值。内容中应包含带有一个或多个 value元素。如True,若不带内容,如则 attribute 会从所选元素中删除。

    除了attributes定位,上述定位符可与带position=”move”的子元素合并。效果是将子定位符目标节点移到父定位符目录位置。
    例如:

    <field name="target_field" position="after">
    <field name="my_field" position="move"/>
    </field>
    

    其它视图类型,如列表和搜索视图,也有 arch 字段,可以表单视图同样的方式被继承。在声明文件data 中加入该视图文件并更新模块即可:

    'data': [
    'views/book_view.xml',
    ],
    

    在这里插入图片描述
    使用 XPath 选取继承点
    有时可能没有带唯一值的属性来用作 XML 节点选择器。在所选元素没有 name 属性时可能出现这一情况,如、或视图元素。另外就是有多个带有相同 name 属性的元素,比如在看板 QWeb 视图中相同字段可能在同一 XML 模板中被多次包含。
    在这些情况下我们就需要更高级的方式来定位待扩展 XML 元素。定位 XML 中元素的一种自然方式是 XPath 表达式。以上一篇文章中定义的 Book 表单视图为例,定位元素的 XPath 表达式是//field[@name]=’isbn’。该表达式查找 name 属性等于 isbn 的元素。
    前一部分对图书表单视图继承的 XPath 写法是:

    <expr="//field[@name='isbn']" position="after">
    <field name="is_available" />
    </xpath>
    

    XPath 语法的更多知识请见 Python 官方文档。
    如果 XPath 表达式匹配到了多个元素,仅会选取第一个作为扩展目录。所以表达式应越精确越好,使用唯一属性。name 属性最易于确保找到精确元素作为扩展点,因此在创建视图 XML 元素时添加唯一标识符就非常重要。
    修改数据
    普通数据记录不同于视图,它没有 XML arch 结构,也不能使用 XPath 来进行扩展。但还是可以通过替换字段值来进行修改。
    数据加载元素实际是对 y 模型进行插入或更新操作。若不存在记录 x,则被创建,否则被更新/覆盖。其它模块中的记录可通过.全局标识符访问,因此可以在我们的模块中重写其它模块中已写入的数据。
    举个例子,我们将 User 安全组的名称修改为 Librarian,对应修改library_app.library_group_user记录。添加library_member/security/library_security.xml并加入如下代码:

    <odoo>
    <!-- Modify Group name -->
    <record id="library_app.library_group_user" model="res.groups">
    <field name="name">Librarian</field>
    </record>
    </odoo>
    

    这里我们使用了一个元素,仅写了 name 字段。可以认为这是对所选字段的一次写操作。
    在声明文件data 中加入security/library_security.xml并更新模块即可看到效果。

    'data': [
    'security/library_security.xml',
    'views/book_view.xml',
    ],
    

    在这里插入图片描述
    在这里插入图片描述


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

服务原则及地区范围

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

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

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

宜兴地区提供上门服务:

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