2013-11-02 28 views
0

我想瀏覽many2many場,但得到這個錯誤:如何瀏覽一個多對多字段創建方法的OpenERP

File "C:\Program Files (x86)\OpenERP 7.0\Server\server\openerp\addons\schoolem\schoolem_dispense_cours.py", line 39, in create AttributeError: '**browse_record_list' object has no attribute

heure_cours_dispense_id

這是代碼:

class schoolem_dispense_cours(osv.Model): 

_name = 'schoolem.dispense_cours' 
_columns = { 
    'name' : fields.char('Code',required=True,help="Champ automatique"), 
    'cours_id' : fields.many2one('schoolem.cours','Nom du Cour',required=True), 
    'aca_id' : fields.many2one('schoolem.aca','Annee Academique',required=True), 
    'enseignant_id' : fields.many2one('res.users','Enseignant',required=True), 
    'salle_de_classe_id' : fields.many2one('schoolem.salle_de_classe','Salle de classe',required=True), 
    'heure_cours_id' : fields.many2many('schoolem.heure_cours_dispense','schoolem_dispense_cours_heure_cours_dispense','dispense_cours_id','heure_cours_dispense_id','Heures de cour'), 
    #'heure_cours_id' : fields.many2many('schoolem.heure_cours_dispense',required=True), 
} 

def create(self, cr, uid, vals, context=None): 
     if not vals['heure_cours_id'][0][2]: 
      raise osv.except_osv(('Erreur!'), ('Une Programmation doit avoir au moins une heure de cours!')) 
     ids = self.search(cr,uid,[('aca_id','=',vals['aca_id'])]) 
     created_hc = [] 
     if ids : 
      for id in ids : 
       obj_disp_crs = self.pool.get('schoolem.dispense_cours').browse(cr,uid,id) 
       created_hc.append(obj_disp_crs.heure_cours_id.heure_cours_dispense_id) 

回答

1

在many2many領域,我們可以添加多個記錄。所以如果我們嘗試瀏覽many2many領域,我們會得到多個記錄或browselist。您可以實現相同的功能:

def create(self, cr, uid, vals, context=None): 
    ids = self.search(cr,uid,[('aca_id','=',vals['aca_id'])], context=context) 
    created_hc = [] 
    for obj_disp_crs in self.browse(cr, uid, ids, context=context): 
     created_hc.extend([x.heure_cours_dispense_id for x in obj_disp_crs.heure_cours_id]) 

但這種代碼也有另外一個問題,因爲,在這之後創建函數的執行滿足條件的新紀錄aca_id =瓦爾斯[「aca_id」]將被創建。但你不會因爲這個記錄是這個創建函數的執行之後創建的搜索條件得到這個記錄ID

ids = self.search(cr,uid,[('aca_id','=',vals['aca_id'])], context=context) 

。所以爲了得到這個id,你需要首先調用create函數的super,然後執行進一步的功能。

+0

得到這個錯誤:AttributeError的: 「字段 'heure_cours_dispense_id' 中不存在對象 'browse_record(schoolem.heure_cours_dispense,1)'」 – levolutionniste

+0

'created_hc.extend([x.id用於obj_disp_crs.heure_cours_id X])'作品因爲現場_heure_cours_dispense_id_是聲明在many2many創造而不是在課堂上引用(schoolem.heure_cours_dispense),而** ** ID始終定義 – levolutionniste

+0

好吧....我想heure_cours_dispense_id是相關many2many對象的一些領域。如果你想要這個id,那麼created_hc.extend([obj_disp_crs.heure_cours_id]中的[x.id for x))會工作... –

相關問題