【问题标题】:Odoo 9.0 create Product Variants with python xml-rpcOdoo 9.0 使用 python xml-rpc 创建产品变体
【发布时间】:2016-12-12 08:21:23
【问题描述】:

我正在尝试使用 python 通过 Odoo 的 xml-rpc api 导入一些 Product.templates 及其 product.variants。

实际上,我的代码使用它们的 attribute.line.ids 创建 Product.templates 非常好,但不知何故 product.variants 没有创建,因此只有一个 product.variant 被创建而没有任何属性。而且我无法弄清楚如何正确地做到这一点。

所以首先我要创建一个如下所示的 product.template(为了简短起见,只在此处插入名称):

id = models.execute_kw(db, uid, password, 'product.template', 'create', [{
'name': "New Partner", 
}])

之后我像这样添加attribute.line.ids:

for key in attValIdList.keys():
attribute_line = models.execute_kw(db, uid, password, 'product.attribute.line', 'create', [{
    'product_tmpl_id': id,
    'attribute_id': key,
    'value_ids': [(6, 0, attValIdList[key])]
}])

所以 attValidKeys 是一个包含字典的列表,我在其中存储属性 ID 及其属性值 ID。

所以这部分被正确填充。 但是没有 product.variants 是由 product.line.ids 创建的。

实际上添加带有属性的 product.product 也可以正常工作,但是我遇到了问题,这个没有任何属性的随机 product.product 会自动创建..

如果你们能帮助我在这个问题上花费很多时间,那就太好了。

【问题讨论】:

  • 你的属性键是整数还是字符串。我的猜测是它是一个字符串,所以你需要将它转换为一个 int 'attribute_id': int(key)

标签: python openerp odoo-8 xml-rpc odoo-9


【解决方案1】:

Odoo.v12 使用 python xml-rpc 创建产品变体

Replace=> product_id=>您的产品 id,variant_name=> 您的变体名称,variant_value=>您的变体值

 product_tmpl_id=models.execute_kw(db, uid, password, 'product.product', 'read', [[[<product_id>]])[0].get('product_tmpl_id','')  
 temp_pro_dta=models.execute_kw(db, uid, password, 'product.product', 'read', [[[<product_id>]])[0].get('attribute_line_ids')
 value_ids=models.execute_kw(db, uid, password, 'product.template.attribute.line', 'read', [temp_pro_dta])
 attrib_ids=models.execute_kw(db, uid, password, 'product.attribute', 'search', [[['name', '=','<variant_name>' ]]])
 if attrib_ids:
        attrib_id=models.execute_kw(db, uid, password, 'product.attribute', 'read', [attrib_ids])[0].get('id')
 else:
        attrib_id=models.execute_kw(db, uid, password, 'product.attribute', 'create', [{"name":"<variant_name>",'create_variant':'always','type':'select'}])
 attrib_value_ids=models.execute_kw(db, uid, password, 'product.attribute.value', 'search', [[['name', '=','<variant_value>'],['attribute_id','=',attrib_id]]])
 if attrib_value_ids:
        attrib_value=models.execute_kw(db, uid, password, 'product.attribute.value', 'read', [attrib_value_ids])[0].get('id')
 else:
        attrib_value=models.execute_kw(db, uid, password, 'product.attribute.value', 'create', [{"name":'<variant_value>','attribute_id':attrib_id}])
 if value_ids:
        value_data_ids=value_ids[0].get('value_ids')
        if attrib_value not in value_data_ids:
                value_data_ids.append(attrib_value)
        attrib_key=models.execute_kw(db, uid, password, 'product.template.attribute.line', 'write', [value_ids[0].get('id'),{'value_ids':[[6,0,value_data_ids]]}])
 else:
        value_ids.append(attrib_value)
        attrib_key=models.execute_kw(db, uid, password, 'product.template.attribute.line', 'create', [{"display_name":"<variant_name>",'product_tmpl_id':product_tmpl_id[0],'attribute_id':attrib_id,'value_ids':[[6,0,value_ids]]}])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多