如何在create方法openerp中浏览多个字段

如何在create方法openerp中浏览多个字段,openerp,manytomanyfield,Openerp,Manytomanyfield,我想浏览多个字段,但出现以下错误: 文件“C:\ProgramFiles(x86)\OpenERP 7.0\Server\Server\openerp\addons\schoolem\schoolem\u dispose\u cours.py”,第39行,在创建属性错误:“**浏览记录列表”对象 无属性 您的身份证号码是多少 代码如下: class schoolem_dispense_cours(osv.Model): _name = 'schoolem.dispense_cours' _co

我想浏览多个字段,但出现以下错误:

文件“C:\ProgramFiles(x86)\OpenERP 7.0\Server\Server\openerp\addons\schoolem\schoolem\u dispose\u cours.py”,第39行,在创建属性错误:“**浏览记录列表”对象 无属性

您的身份证号码是多少

代码如下:

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)

在许多字段中,我们可以添加多个记录。因此,如果我们尝试浏览many2many字段,我们将获得多个记录或一个浏览列表。您可以实现与以下相同的功能:

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])
但是这段代码还有另一个问题,因为在执行这个create函数之后,将创建一个满足条件aca_id=vals['aca_id']的新记录。但在搜索条件中,您将无法获取此记录id

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

因为此记录是在执行此create函数后创建的。因此,为了获得此id,您需要首先调用create函数的super,然后执行进一步的功能。

得到了此错误:AttributeError:“在对象“browse\u record(schoolem.heure\u cours\u dispute,1)”中不存在字段“heure\u dispute\u id”
created\u hc.extend([x.id代表obj\u disp\u crs.heure\u cours\u id]中的x)
之所以有效,是因为字段heure\u cours\u dispense\u id在许多创建中声明,但不在类引用(schoolem.heure\u cours\u dispense)中,而id始终定义为ok。。。。我认为heure_cours_Dispose_id是相关多个对象中的某个字段。如果需要id,那么创建的扩展([x.id代表obj\U disp\U crs.heure\U cours\U id中的x])将起作用。。。