我浏览记录,然后我想在浏览返回结果时执行特定代码。
这是我的代码:
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)
答案 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})