Python Openerp NotImplementedError:browse_记录(stock.move,159275)上不允许迭代
我正在浏览记录,如果浏览返回结果,我想执行特定的代码 这是我的密码:Python Openerp NotImplementedError:browse_记录(stock.move,159275)上不允许迭代,python,function,iteration,openerp,wizard,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
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)
要解决此问题,请在
for
循环之前添加以下内容:
if not isinstance(ids, list):
ids = [ids]
问题是,ids
可以是一个id列表或一个数字id
在后一种情况下,browse
返回一条不可iterable的记录,而不是可iterable的记录集合。解决方案是确保ids
是一个列表
问题的另一个可能原因是最后一个write()
命令:如果wizs
是一条记录,则写入操作需要一个ID。您可以尝试将其替换为:
move_obj.write(cr, uid, wizs.id, {'date_expected':date_pick})
我已经在我的模块上编写了脚本。但仍然是相同的错误代码。
NotImplementedError:browse\u记录(stock.move,159275)上不允许迭代。
?