我正在尝试从制造订单生成采购订单。我创建了很多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
答案 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