如何在 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])
无效
谢谢
终于想通了。就这样吧
fields_name = ['name', 'parent_id/.id']
然后
cl['ClassName'], parent_dict[cl['Deps']].id
会起作用。
而且 fields_name = ['name', 'parent_id/id']
将用于外部 ID,即 xml id
我正在尝试使用 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])
无效
谢谢
终于想通了。就这样吧
fields_name = ['name', 'parent_id/.id']
然后
cl['ClassName'], parent_dict[cl['Deps']].id
会起作用。
而且 fields_name = ['name', 'parent_id/id']
将用于外部 ID,即 xml id