首页 > 解决方案 > 超过 1 个产品要听写

问题描述

在这里我添加product_id到 vals dict 但问题是如果有超过 1 个产品,我如何将product_id每一行添加到这个 dict vals。可能我需要列出一个列表product_ids然后将其添加到 dict 但有点挣扎

@api.multi
    def button_details(self):

        domain = [
            ('product_tmpl_id', '=', self.product_id.id)
        ]
        vals = {}

        bom_products = self.env['mrp.bom'].search(domain)
             for bom_line in bom_products.bom_line_ids:
                  vals['product_id'] = bom_line.product_id.id
                  vals['product_uom_qty'] = bom_line.product_qty

    context = self.env.context.copy()
    context['view_buttons'] = True
    view_id = self.env.ref('config.view_order_line_form_view').id
    view = {
        'name': _('Details'),
        'view_type': 'form',
        'view_mode': 'tree, form',
        'res_model': 'sale.order.line',
        'views' : [(view_id,'tree')],
        'type': 'ir.actions.act_window',
        'target': 'new',
        'readonly': True,
   #     'res_id': ,
        'context': context
    }
    return view

更新的最终目标是打开一个由按钮触发的视图,其中包含我试图从 bom.line 中提取的产品和数量

标签: odoo-8odooodoo-9

解决方案


  • 请更改此代码可能对您有所帮助。
    bom_products = self.env['mrp.bom'].search(domain)

    vals['product_id'] = bom_products.bom_line_ids.mapped('product_id.id')
  • 并删除 for 循环它是没有必要的。

推荐阅读