odoo 数据迁移:在 python 上通过 odoorpc 在多个价目表上输入一个产品

odoo datamigration: Enter one product on several pricelists via odoorpc on python

我正在研究 python 导入脚本,将数据从 xls sheet 导入到 odooErp。 在脚本中,对于不同的价目表(在本例中为 p1-p4),有 "name"、"if it is a bom list" 和(重要)"prices" 等信息。

我正在使用以下版本: Odoo:社区 v.12 python:第 3.7.6 节 odoorpc:0.7.0

我的脚本已经能够在odoodb 中找到产品,获取一些xls 数据并将其写入odoodb 中的产品。 这些是名称、价格(这是标准价格)、类型等字段(标准 rpc 调用) 但是我无法管理将产品写入价目表或将价目表分配给产品。 我没有找到任何有关此步骤的文档,说明如何管理解决此问题的语法。 所以我试着这样做:

PricelistModel = odoo.env['product.pricelist']
  pricelist = PricelistModel.search([('name', '=', 'p1')], limit=1)
  if pricelist:
      p = PricelistModel.browse(pricelist)
      
      item = {
          'applied_on': '1_product',
          'product_tmpl_id': product['id'], #<-- this is int also tried string
          'compute_price': 'fixed',
          'fixed_price': float(row[3]) #<--- this is int also tried string
      }

      p.write({
          'item_ids':
              item 
      })

不幸的是,即使没有显示任何错误并从函数中收到 "True",此调用也不成功并且什么也没做。

现在我的问题是:

干杯,非常感谢您的宝贵时间:)

试试这个代码:

PricelistModel = odoo.env['product.pricelist']
pricelist = PricelistModel.search([('name', '=', 'p1')], limit=1)
if pricelist:
    item = {
        'applied_on': '1_product',
        'product_tmpl_id': product['id'], #<-- this is int also tried string
        'compute_price': 'fixed',
        'fixed_price': float(row[3]) #<--- this is int also tried string
    }

    # I assume the 'item' is a correct dictionary and the 'item_ids' is a One2many field, so you need an One2many special command

    p.write({
        'item_ids': [(0, False, item)] 
    })

你可以阅读https://www.odoo.com/documentation/13.0/reference/orm.html#create-update作为One2many特殊命令的参考