如何在 odoo 加载方法中将数据库 id 指定为 many2one 字段

How to give database id as many2one field in odoo load method

我正在尝试使用 odoo v10 中的加载 orm 方法批量创建记录(类别、产品...)。

我遇到的问题是关于如何将 m2o 字段引用为数据库 ID。

# get list of categ name from input data
parent_categ_codes = [categ['name'] for categ in categ_data]
# get product.category by name
parent_categ_objs = self.env['product.category'].search([('name','in',parent_categ_codes)])
parent_dict = {categ.name: categ for categ in parent_categ_objs}
data = []
fields_name = ['name', 'parent_id']
# populate data
for categ in categ_data:
# this works but very slow beacuse of name_search lookup
    data.append([categ['name'], parent_dict[categ['parent_id']].name])
self.env['product.category'].load(fields_name,data)

我怎样才能为 parent_id 创建一个引用作为 id?

data.append([categ['name'], parent_dict[categ['parent_id']].id]) 无效

reference link

谢谢

终于想通了。就这样吧

fields_name = ['name', 'parent_id/.id']

然后

cl['ClassName'], parent_dict[cl['Deps']].id

会起作用。 而且 fields_name = ['name', 'parent_id/id'] 将用于外部 ID,即 xml id