Openerp NotImplementedError:browse_record上不允许迭代(stock.move,159275)

时间:2014-12-18 07:58:43

标签: python function iteration openerp wizard

我浏览记录,然后我想在浏览返回结果时执行特定代码。

这是我的代码:

 def create_update_date(self, cr, uid, ids, context=None):
        _log.info ('this is method to create a MO')
        _log.info (context)
        picking_obj = self.pool.get('stock.picking')
        move_obj = self.pool.get('stock.move')
        for stock in self.browse(cr, uid, ids, context=None):
            for  wiz in picking_obj.browse(cr, uid, stock.stock_id.id, context=None):
                date_pick = stock.date
                for wizs in wiz.move_lines:
                    move_obj.write(cr,uid,wizs,{'date_expected':date_pick})

但它不起作用,在评估if条件时,会引发异常:

NotImplementedError: Iteration is not allowed on browse_record(stock.move, 159275)

1 个答案:

答案 0 :(得分:1)

要解决此问题,请在for循环前添加:

if not isinstance(ids, list):
    ids = [ids]

问题在于ids可能会丢失一个id列表或一个数字ID。

在后一种情况下,browse返回单个记录,不可迭代,而不是可迭代的记录集合。解决方案是确保ids是一个列表。

问题的另一个可能原因是最后一个write()命令:wizs是一个记录,写操作需要一个ID。您可以尝试将其替换为:

move_obj.write(cr, uid, wizs.id, {'date_expected':date_pick})