Odoo 使用不同数量的值更新字段

Odoo 使用不同数量的值更新字段,odoo,odoo-8,odoo-9,Odoo,Odoo 8,Odoo 9,在res.partner模型中,我有一个字段 property\u product\u pricelist=fields.Many2many('product.pricelist')) 按订单出售 alternative\u pricelist\u id=fields.Many2many( ‘产品价格表’) 合作伙伴可以有多个价目表,因此我的目标是将第一个价目表添加到pricelist\u id字段,并将其他价目表添加到备选的\u pricelist\u id。问题是,我编写代码的方式不是很

在res.partner模型中,我有一个字段

property\u product\u pricelist=fields.Many2many('product.pricelist'))
按订单出售

alternative\u pricelist\u id=fields.Many2many(
‘产品价格表’)
合作伙伴可以有多个价目表,因此我的目标是将第一个价目表添加到pricelist\u id字段,并将其他价目表添加到备选的\u pricelist\u id。问题是,我编写代码的方式不是很好,正如您所看到的,如果有超过4个价目表,我将得到一个错误。那么,我怎样才能避免它,用另一种方式来写呢

@api.multi
@api.onchange('partner_id'))
def onchange_partner_id(自身):
super(SaleOrder,self).onchange\u partner\u id()
值={'pricelist\u id':self.partner\u id.property\u product\u pricelist[0]和self.partner\u id.property\u product\u pricelist.id[0]或False,
“备选价格表\u id”:self.partner\u id.property\u product\u价格表[1]和self.partner\u id.property\u product\u价格表[2]以及self.partner\u id.property\u product\u价格表[3]或False,
}
自我更新(值)
试试这个:

@api.multi
@api.onchange('partner_id')
def onchange_partner_id(self):
    super(SaleOrder, self).onchange_partner_()
    for record in self:
        pricelist_id = False
        alternative_ids = []
        for pricelist in record.partner_id.property_product_pricelist:
            if not pricelist_id:
                pricelist_id = pricelist.id
            else:
                alternative_ids.append(pricelist.id)
        record.pricelist_id = pricelist_id
        record.alternative_pricelist_ids = [(6, 0, alternative_ids)]