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

results matching ""

    No results matching ""