如何在odoo加载方法中将数据库id作为many2one字段给出

时间:2018-05-09 09:54:17

标签: python odoo-10

我正在尝试使用odoo v10中的load 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

感谢

1 个答案:

答案 0 :(得分:0)

最后弄明白了。就像

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

然后

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

会奏效。  而fields_name = ['name', 'parent_id/id']也将用于外部ID,即xml id