如何在odoo中的many2many字段中发送多个值?

时间:2016-07-15 07:08:32

标签: openerp odoo-8

我正在尝试从制造订单生成采购订单。我创建了很多2个字段来获取多个产品。我想将多个产品ID发送到我的自定义函数。我能够发送1个值但是发送多个产生错误会产生错误为Expected singleton: product.template(4, 3)

from openerp import models,fields,api
class generate_purchase_order(models.Model):
    _name = 'mrp_to_purchase_order'
    product_id = fields.Many2many('product.template',string='Products',required=True)

    @api.multi    
    def generate_purchase_order2(self):
        for wizard in self:
            mrp_obj = self.env['mrp.production']
            mrp_obj.generate_purchase_order(wizard.product_id.id) #function call
        return { 'type': 'ir.actions.act_window_close'}

mrp_custom.py,

from openerp import models,api
class mrp_production(models.Model):
    _inherit = 'mrp.production'

    @api.multi
    def generate_purchase_order(self,product_id):
        purchase_line_obj = self.env['purchase.order.line']

        context = self._context
        for order in self.browse(context['active_ids']):     
            for line in order.bom_id.bom_line_ids:    
                if line.product_id.id != product_id:#problem line
                    continue
                #rest of code    

1 个答案:

答案 0 :(得分:1)

singleton: product.template(4, 3)

此错误表示代码期望单个记录而非记录集,因此您必须更改代码以允许使用try-catch或使用try-catch确保记录集,并避免错误。这是一般信息。

现在,如果你想从many2many获取多条记录,那么它根本就没有问题,你必须只传递这个many2many对象然后使用它。 获得many2many对象来处理此记录集中的每条记录后,您必须使用for record in recordset:

另外wizard.product_id.id 这是错误!!! product_id是many2many因此您必须传递product_id,或者如果您想自己浏览,则必须传递 product_id.ids