【转载】odoo技术开发白皮书 第二部分 第九章 XMLID 外部ID

转载:http://book.odoomommy.com/chapter2/README14.html

XMLID

什么是XML ID

xmlid的含义是指用户定义在xml记录中的id,即我们在xml文件中经常写到的id。它的作用是什么?

我们知道,每个模块在安装的时候会自动加载预先定义好的基础数据,这部分数据中包括了,内置的权限组、记录规则、视图和一些组织数据。因为我们的模块设计的原则就是要能够独立安装、不依赖于特定的数据库。那么odoo中的某些业务逻辑需要获取这些预定义数据在数据库中的记录ID,这就是XMLID的作用,提供一种编程意义上的数据库id映射

xmlid的构成

我们首先来了解一下XMLID的组成,xmlid由两部分组成,一部分是模块名,另外一部分是xml记录中的id。以我们的百度地图模块中的一个xml记录为例:

    <record id="action_open_baidu_map_crm" model="ir.actions.act_window">
      <field name="name">baidu map</field>
      <field name="type">ir.actions.act_window</field>
      <field name="res_model">res.partner</field>
      <field name="view_mode">bmap</field>
    </record>

这块代码映射到数据库中的xmlid为 baidu_map.action_open_baidu_map_crm。当前模块内的模块名称可以省略。

获取xmlid映射的id

那么如何获取xmlid对应的id呢?这里要分几种情况。

python文件中的获取

对于models文件中,我们可以利用enviroment提供给我们的ref方法来获取:

self.env.ref("baidu_map.action_open_baidu_map_crm").id

对于controller,类似地:

request.env.ref("baidu_map.action_open_baidu_map_crm").id

xml文件中获取

首先,xml中哪些情况需要用到xmlid对应的id呢?

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值