【请教语法】关于write search 和get
- 
for orderline in purchase.order_line: 
 self.pool.get('purchase.order.line').write(cr, uid, [orderline.id], {'state': 'approved'} )
 这里是我的原来的语句!
 转身 8:56:44
 直接把所有的都写成了 approved
 shelly→水 8:56:44
 然后?
 转身 8:56:52
 我想修改一下!
 shelly→水 8:56:56
 改成啥?
 转身 8:57:11
 只把里面state 为 confirm 改成approved
 转身 8:57:17
 其他的不改
 shelly→水 8:57:24
 那你要在前面查询. shelly→水 8:58:52
 你应该
 op_ids = self.pool.get('purchase.order.line').search(cr.uid[('state','=','confirm')]
 for op_id in op_ids:
 self.pool.get('purchase.order.line').write(cr, uid, op_id, {'state':'confirm'})
 shelly→水 8:59:08
 先查询出ID. 然后遍历ID 使用write 方法
 shelly→水 8:59:13
 应该也可以不用遍历.
 shelly→水 8:59:26
 直接
 self.pool.get('purchase.order.line').write(cr, uid, op_ids, {'state':'confirm'})
 shelly→水 8:59:34
 直接 操作 op_ids 就行了.
 转身 8:59:51
 我试试看,
 转身 9:02:48
 老将出马,一个顶三!
 转身 9:07:46
 谢谢shelly [/sup]
 self.pool.get('stock.production.lot').write(cr, uid, [orderline.prodlot_id.id], {'state': 'approved'} )。然后我又有另外一句也需要这么修改!
 我按照shelly的方式 依葫芦画瓢,
 op_ids=self.pool.get('stock.production.lot').search(cr,uid,[('state','=','cinfirmed)])
 self.pool.get('stock.production.lot').write(cr, uid, op_ids, {'state': 'approved'} ).
 就不起作用!
 我想这里主要的还是因为 [orderline.prodlot_id.id]
 因为write的时候,[orderline.prodlot_id.id] ,是把orderline 里面prodlot_id 传输给'stock.production.lot',然后把这条记录的state给改写了!
 但是在search 的时候,怎样才能把 orderline 里的 prodlot_id 传输给search呢?
 写个SQL 语句,循环一下,还是 有直接的方法呢?
 不知道哪位前辈指点一下?
 谢谢了先!
- 
说明一下啊:这里是程序的主要代码! 
 被注释掉的两句是原来的!
 剩下的都是后改的!
 程序背景: 两个object: 'purchase.order.line' 字段state, prodlot_id
 'stock.production.lot' 字段 state
 为了实现的目的是:当approve PO的时候,把 'purchase.order.line' 里'state','=', 'complied' 改成 appvoed
 同时 把 相应的 'stock.production.lot' 字段 state 也改成 appvoed
 这里的对应关系是'purchase.order.line' 的 prodlot_id = 'stock.production.lot' 的id
 [glow=red,2,300]但是下面的代码报错 list out of range[/glow]
 # 将 POline的状态写成 approve 测试没问题!
 pol_ids= self.pool.get('purchase.order.line').search(cr, uid,[( 'state','=', 'complied')] )
 self.pool.get('purchase.order.line').write(cr, uid, pol_ids, {'state': 'approved'} )
 #将 stock_production_lot 的状态写成 approve,问题就在这里!
 #读取 prodlot_id 的值,并赋予 values,但是这里用了POL_IDS ,不知道是否可以这样用!
 values= self.pool.get('purchase.order.line').read(cr,uid,pol_ids,['prodlot_id']) [glow=red,2,300] 问题所在[/glow]
 #查询 'stock.production.lot' id 等于 'prodlot_id'
 lot_id= self.pool.get('stock.production.lot').search(cr, uid,[( 'id','in', 'values')] ) [glow=red,2,300]问题所在[/glow]
 # 写数据 。
 self.pool.get('stock.production.lot').write(cr, uid, lot_id, {'state': 'approved'} )
 
 #self.pool.get('purchase.order.line').write(cr, uid, [orderline.id], {'state': 'approved'} )
 #self.pool.get('stock.production.lot').write(cr, uid, [orderline.prodlot_id.id], {'state': 'approved'} )
- 
从楼主上面贴出的代码来看,对一些基本概念还是有些混淆。 
 我想问一一下,为什么要用for循环?purchase.order_line代表什么?如果已经获得了purchase.order_line对象了,为什么还要self.pool.get?
