Openerp Odoo:ValueError(“预期的单例:%s”self)

Openerp Odoo:ValueError(“预期的单例:%s”self),openerp,valueerror,raiseerror,Openerp,Valueerror,Raiseerror,我正在修改Odoo OpenEduCat考试模块,以适应我所在机构的需要。为此,我定制了如下所示的代码。然而,当我点击generate按钮时,odoo会引发预期的单例错误。 --Python代码-- --错误详细信息-- Odoo服务器错误 回溯(最近一次呼叫最后一次): 文件“/home/v4d/odoo/openerp/http.py”,第650行,在异常处理中 返回super(JsonRequest,self)。\u handle\u异常(exception) 文件“/home/v4d/

我正在修改Odoo OpenEduCat考试模块,以适应我所在机构的需要。为此,我定制了如下所示的代码。然而,当我点击generate按钮时,odoo会引发预期的单例错误。

--Python代码--

--错误详细信息--

Odoo服务器错误

回溯(最近一次呼叫最后一次):

文件“/home/v4d/odoo/openerp/http.py”,第650行,在异常处理中 返回super(JsonRequest,self)。\u handle\u异常(exception)

文件“/home/v4d/odoo/openerp/http.py”,第687行,已发送 结果=self.\u调用函数(**self.params)

文件“/home/v4d/odoo/openerp/http.py”,第323行,在调用函数中 返回选中的\u调用(self.db、*args、**kwargs)

文件“/home/v4d/odoo/openerp/service/model.py”,第118行,在包装器中 返回f(数据库名,*args,**kwargs)

文件“/home/v4d/odoo/openerp/http.py”,第316行,在checked\u调用中 结果=自身终点(*a,**kw)

文件“/home/v4d/odoo/openerp/http.py”,第966行,在调用中 返回自方法(*参数,**kw)

文件“/home/v4d/odoo/openerp/http.py”,第516行,作为响应 响应=f(*参数,**kw)

文件“/home/v4d/odoo/addons/web/controllers/main.py”,第899行,调用按钮 action=self.\u调用\u kw(模型、方法、参数,{})

文件“/home/v4d/odoo/addons/web/controllers/main.py”,第887行,输入 返回getattr(request.registry.get(model),method)(request.cr,request.uid,*args,**kwargs)

包装器中的第250行文件“/home/v4d/odoo/openerp/api.py” 返回旧的_api(self、*args、**kwargs)

旧api中的文件“/home/v4d/odoo/openerp/api.py”,第421行 结果=新的api(REC、*ARG、**kwargs)

文件“/home/v4d/odoo/openerp/api.py”,第425行,在新的api中 结果=[自我中rec的方法(rec,*args,**kwargs)]

文件“/home/v4d/odoo/addons/openeducat_-exam/models/result_-template.py”,第71行,在generate_-result中 总考试分数+=考试。考试分数。总分数

文件“/home/v4d/odoo/openerp/fields.py”,第821行,在get 记录。确保_one()

文件“/home/v4d/odoo/openerp/models.py”,第5432行,第一行 raise VALUETERROR(“应为单例:%s”%self)

ValueError:预期的单例:op.exam(44,45,46)


我尝试过其他可以在互联网上找到的解决方案,但似乎不起作用。请帮我处理这件事,谢谢

这是您代码中的问题

####IMPORTANCE take the mark and decide pass or fail base on passing mark in each subject
'status': attd.marks >= exam.exam_ids.min_marks and 'pass' or 'fail',
exam.exam\u id它将返回可浏览对象的列表(记录集列表),并且您正试图访问min\u标记属性,因此这里它会混淆哪个对象的min\u标记属性。因此,它引发了一个错误

因此,您需要通过指定exam.exam\u id[0]来指定单个对象(只有单个对象会返回),或者需要从one2many模型中搜索适当的记录,然后才能访问“最小标记”字段

为所有对象分别创建属性(OOP规则)。静止的 属性将通过类进行访问

####IMPORTANCE take the mark and decide pass or fail base on passing mark in each subject
'status': attd.marks >= exam.exam_ids.min_marks and 'pass' or 'fail',