odoo接口之查看数据字典,查看表结构及关联信息

  • A+

odoo作为开源平台,十分适用处理企业业务并成为数据中台。由此我们经常要进行与第三方软件的对接,这时,就需要了解odoo的数据字典了。

odoo对开发者极其友好,全开源的平台,基于微服务的架构,意味着你完成了开发,也就完成了接口及相关文档。

下文将指引我们查看odoo的数据表及字段,用于odoo双向对接。

 

主要内容为:

知识准备

知识准备很重要,odoo是完全面向对象的。所以会有对象的继承,这会导致并不是每个对象的完整内容都在本对象表的。

几个注重点,比如

  • selection字段,虽然也可以取到对应关系,但省事的办法还是自行对照。比如销售订单 sale.order中的状态字段 state: draft=草稿,  sale=销售订单。这个自己做个对应会更省事
  • datetime字段,在 pg库中,保存的时间都是带时区的时间字段,都是 utc时间。在国内,如果要应用,多数要+8小时,这个如果是对接数据库,那么直接用 pg的 时区转换函数即可( at TIMEZONE 'UTC+8')

 

查看数据字典

 

进入系统后,开启开发者模式。

方式一:右上角点击

方式二:直接 url中增加 debug=1,有时方式一没权限则可如此处理,如

https://demo.erpapp.cn/web?debug=1

实例比如我们要对接库存,先进入相关功能中

再确认是哪张数据表,从url中可以看中,model后面的值即是对象,如:

https://demo.erpapp.cn/web?debug=1#action=1320&model=stock.quant

则数据表为  stock_quant,将对象的 "." 换为 "_",即为数据表了。

或者点击该数据,进入详情,把鼠标放在字段上,就会显示相关信息。其“对象”就表明了是哪张表。

其它的,“字段”即字段名本例为 product_id,类型即是字段的类型,这个详见 orm 文档学习

https://www.sunpop.cn/documentation/13.0/reference/orm.html

“关系”表明这是一个关系字段,对应 product.product 对象,即 product_product 表。所有的 m2o字段,存的都是对应关系表的id字段。

比如从 stock_quant中取到记录的 product_id=3,则是对应 product_product数据表中 id=3的产品。那么我们要取产品编码则是 product_product.default_code as product_code left join product_product on product_product.id = stock_quant.product_id

 

以上,我们就可知道库存明细表的数据表及字段相关了。

一句话,开发者模式,把鼠标放在字段上方,即可知道相关数据字典。

 

查看全数据字典

开发者模式下,在菜单

设置-技术-数据库结构-模型,可以看到所有对象,

可以按模型名搜索,比如 stock.location

 

 

具体进入对象详情,点击字段,可以查看所有字段。

或者,在具体对象的列表或者详情界面,点击 debug图标后,点击 视图字段。即可查看本对象全部的字段。

 

集团多公司相关

odoo中很多主表的对象,都会有1个company_id字段,代表数据是属于哪个公司的。

在 res.company对象,即res_company表中,可查询到各公司信息及层级关系。

 

通用的关键字段

odoo的基本每个对象都有些关键字段,主要的如下:

id: 整型的自增id值,每条记录有个唯一的id,别的对象如 b 引用本对象 a,在 b 表中保存的对应 a 值,就是用此 id值

name: 名称。 一般是在被关联引用时,显示在界面的值。 正常情况下是显示 display_name的值,但display_name一般是计算字段,不保存在数据库。

create_uid: 记录创建者

create_date: 记录创建时间,注意是个 UTC 的时间戳。

write_uid: 记录最后更新者

write_date: 记录最后更新时间

** 注意,odoo里所有 datetime类型的字段,保存的都是带时区的 UTC 格林威治时间。从数据库中取值可以用 PG自带的 at TIME zone 处理成中国时间

 

其它

对于非实体表的,以及继承相关的,遇到问题直接咨询你的支持合作伙伴即可。

发表评论

您必须才能发表评论!