用 many2many 覆盖 many2one

Override many2one with many2many

我尝试用 many2many 覆盖 many2one 字段

 property_product_pricelist = fields.Many2many('product.pricelist',
                                                      string="Sale Pricelist",
                                                      help="This pricelist will be used, instead of the default one, for sales to the current partner")

我在尝试保存值时遇到此错误

File "/home//workspace/odoo-9.0/openerp/models.py", line 5384, in _browse
    env.prefetch[cls._name].update(ids)
TypeError: unhashable type: 'list'

我也这样试过

property_product_pricelist = fields.Many2many('product.pricelist', column1='partner_id', column2='pricelist_id') 

但得到

ProgrammingError: column product_pricelist_res_partner_rel.pricelist_id does not exist

第 1 行:SELECTproduct_pricelist_res_partner_rel.pricelist_id,产品...

我想到的最佳解决方案。

  • 创建一个全新的 many2many 字段
  • 编写一个 onchange 方法,将原始字段(此处为 many2one)的值设置为新的 many2many 字段
multiply_pricelists_ids = fields.Many2many(
        'product.pricelist', string='Multiply Pricelists')

    @api.onchange('property_product_pricelist')
    @api.multi
    def pricelist_change(self):
        self.multiply_pricelists_ids =  self.property_product_pricelist