浅谈 odoo中的外部标识符

外部标识符,也称为XML ID,是用于唯一标识 Odoo 中特定记录的有可读性的字符串标识符。在Odoo 中加载数据时它们就很重要了,这样可以对已有数据记录进行修改或在其它数据记录中引用它。不管是一些菜单、视图、动作、初始化数据,都可以看到有id这么一个字段,至于这个id是什么,下面为您解答:

比如说定义如下的初始化数据:

        <record id="quality_check_report_A4" model="report.paperformat">
            <field name="name">A4(库存检查)</field>
            <field name="format">A4</field>
            <field name="orientation">Portrait</field>
            <field name="margin_top" eval="10.0"/>
            <field name="margin_left" eval="7.00"/>
            <field name="margin_bottom" eval="10.0"/>
            <field name="margin_right" eval="7.0"/>
            <field name="header_spacing" eval="10"/>
            <field name="dpi" eval="90"/>
        </record>

该段代码的作用是初始化了模型 report.paperformat 的一条记录,field为这条记录的各个字段,id就是这条记录的外部标识符,在odoo中的表现形式是 模块名.id 。

以上代码中的 id 与 report_paperformat 这个数据表中的id有何区别?

odoo维护了一张外部标识符与与其真实数据表的映射表——ir_model_data,所有的外部标识符是通过 ir_model_data 来存储的,例如根据以上的外部标识符在ir_model_data 查找记录:

如何根据 外部标识符 查找这条记录在report_paperformat数据表中的id?

id = self.env.ref('包名.quality_check_report_A4').id

self.env.ref('包名.quality_check_report_A4') 表示通过外部标识符获取这条记录,其实通过看数据表我们也可以得出,该条记录的数据表id为 10,如下所示:

其实这正与 ir_model_data 表中的res_id相对应.

注意:外部标识符仅需在 Odoo 模块内唯一,两个模块中使用相同标识符不会产生冲突,因为在odoo中外部标识符是以 模块名.id 的形式存在。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值