代码之家  ›  专栏  ›  技术社区  ›  Chaban33

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

  •  1
  • Chaban33  · 技术社区  · 6 年前

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

    property_product_pricelist = fields.Many2many('product.pricelist')
    

    在销售订单中

    alternative_pricelist_ids = fields.Many2many(
            'product.pricelist')
    

    合作伙伴可以有多个价目表,因此我的目标是将第一个价目表添加到price list\u id字段,并将其他价目表添加到其他价格表。问题是我写代码的方式不是很好,你可以看到,如果有超过4个价格表,我会得到一个错误。所以我怎样才能避免它,用另一种方式来写呢?

       @api.multi
        @api.onchange('partner_id')
        def onchange_partner_id(self):
            super(SaleOrder,self).onchange_partner_id()
            values = { 'pricelist_id': self.partner_id.property_product_pricelist[0] and self.partner_id.property_product_pricelist.id[0] or False,
                       'alternative_pricelist_ids': self.partner_id.property_product_pricelist[1] and self.partner_id.property_product_pricelist[2] and self.partner_id.property_product_pricelist[3] or False,
    }
        self.update(values)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Quentin THEURET    6 年前

    试试这个:

    @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)]