【分享】查找某条记录的id
-
根据老肖的pdf教程,导入数据的时候可以指定这一条数据的 id,便于以后导入相关表时 ref 它。在模块开发的时候也有很多时候需要知道menu 或 view的id。以前一直是到原模块的xml文件中去找,效率很低。群里也有很多人问起,今天终于找到了。
数据库里有个表ir_model_data对应的对象ir.model.data就是用来存储这些字符类型的id的。
name就是我们要的字符型的 id
model是这条记录所属的对象名
res_id是这条记录在它的model所在的数据表里的database id,也就是那个唯一的主键那么去哪里得到当前记录的model和res_id呢?
哈哈,地址栏这么有用的表,每次都到数据库里去sql就太笨了吧,好在我们可以给 对象ir.model.data建个菜单,再自定义视图把model和res_id设置为 总是可搜索。
效果如下:注意:根据老肖的描述,只有xml导入的数据才有id,所以并不是所有记录在这里都能找到噢。
-
鱼说没看懂,我来举个例子。
比如我要导入产品,产品计量单位是必输项,many2one的,整理的数据是字符型,比如 块(英文PCE那个),而CSV文件里你用“块”导入的话应该是不行的,老肖说应该用id,这个id是什么呢?是product_uom_unit
怎么找到的呢,两个办法,在product模块的product_data.xml文件的第19行。怎么知道在这里呢?凭感觉。。。
那么不凭感觉怎么找呢?通用的方法就是找ir.model.data这个对象的记录。
打开计量单位PCE这条记录,看到地址栏里 model=product.uom&id=1
进入那个咱们自己建的menu,find id
资源ID输入 1 - 1
对象输入product.uom就找到 product_uom_unit 了
注意这里对象条件查询它是用的like,所以会找出两条,不过比较一下就知道哪一条是咱们要的了。
引用的时候不要忘了在id前面加module哦