2015-08-24 74 views
0

我有這種情況w/c我不知道該怎麼辦。問題是這樣的:在類sale_order我有這樣的定義:如何從python中的另一個one2many字段填充one2many字段?

... 
'sched_lines' : fields.one2many('schedule.schedule','Schedule'), 
'factor_lines' : fields.one2many('sale.order.factor','Factor'), 

所以呢,在類account_invoice我也有這樣的定義:

... 
'sched_lines' : fields.one2many('schedule.schedule','Schedule'), 
'factor_lines' : fields.one2many('sale.order.factor','Factor'), 

回來上課sale_order我覆蓋方法manual_invoice

for sale_order in self.browse(cr,uid,ids,context=context): 
     _logger.info("\n\t\t\tFACTOR LINES IN SALE ORDER ... %s"%(str(sale_order.factor_lines))) 
     _logger.info("\n\t\t\tHISTORY IN SALE ORDER ... %s"%(str(sale_order.sched_lines))) 
     _logger.info("\n\t\t\tSALE ORDER ID ... %s\n\t\t\tIDS ... %s"%(str(sale_order.id),str(ids))) 
     inv_id = self.pool.get('account.invoice').search(cr,uid,[('id','in',[new_inv_ids]),('origin','=',sale_order.name)]) 

     factor_list = self.pool.get('sale.order.factor').search(cr,uid,[('invoice_id','=',inv_id[0])]) 
     _logger.info("\n\t\t\tfactor_list...%s"%(str(factor_list))) 
     factor_lines1 = [factors.id for factors in self.pool.get('sale.order.factor').browse(cr,uid,factor_list,context=context)] 
     _logger.info("\n\t\t\tfactor_lines1...%s"%(str(factor_lines1))) 

     # cr.execute('select id from sale_order_factor where invoice_id = %s', (tuple(inv_id))) 
     #---------------- factor_lines1 = map(lambda x: x[0], cr.fetchall()) 
     # factor_lines1 = [(1,0,[factors.id for factors in sale_order.factor_lines])] 
     #--- _logger.info("\n\t\t\tfactor_lines1...%s"%(str(factor_lines1))) 

     self.pool.get('account.invoice').write(cr,uid,inv_id,{ 
                   'sched_ids': [(6,0,[sched.id for sched in sale_order.sched_lines])], 
                   'factor_lines': [(6,0,[factor.id for factor in sale_order.factor_lines])],#factor_lines1 
                   }) 

我不明白的是,這個說法「[(6,0,[factor.id for factor in sale_order.factor_lines])]」不起作用。當我查看發票時,它尚未填充。它的來源,即sale_order中的factor_lines,不爲空。雖然這種說法「[(6,0,[sched.id在sale_order.sched_lines章附表)]」工作正常。來自sale_order的sched_lines中的內容正在正常運行。有沒有人可以指出我的代碼中缺少什麼,如果有的話?我真的被困在這。

任何幫助是非常讚賞。

回答

0

好,我知道這沒有什麼錯的代碼。這個錯誤是我的

'factor_lines' : fields.one2many('sale.order.factor','Factor'), 

相反,它指向它的聲明在課堂上sale_order_factor計數器部分(many2one)。它指向不同的階級。順便說一下,我忘記了我的上面的聲明沒有正確設置,正如在這個問題的正文部分所看到的,也許是錯字錯誤。

相關問題