Python openerp移动应用程序
试用使用jquery mobile构建的openERP 6.1内置移动应用程序。Python openerp移动应用程序,python,mobile,openerp,Python,Mobile,Openerp,试用使用jquery mobile构建的openERP 6.1内置移动应用程序。 我有自己的模块“school.student”,当我点击学生时,我会看到学生树,当我点击任何特定的学生时,我会得到错误 File "/opt/openerp/server/openerp/osv/fields.py", line 551, in get ids2 = obj.pool.get(self._obj).search(cr, user, se
我有自己的模块“school.student”,当我点击学生时,我会看到学生树,当我点击任何特定的学生时,我会得到错误
File "/opt/openerp/server/openerp/osv/fields.py", line 551, in get
ids2 = obj.pool.get(self._obj).search(cr, user,
self._domain + [(self._fields_id, 'in', ids)],
limit=self._limit, context=context)
AttributeError:“非类型”对象没有属性“搜索”
好像这里讨论的对象是school.student
通过web或gtk客户端没有类似错误,只有新的移动客户端。在访问任何其他对象(如school.course,甚至
school.course.subjects)时,我都不会遇到这样的错误。只有一个未打开的school.student表单视图。你知道为什么会这样吗
编辑:回溯
2012-09-07 13:57:47199 17516信息?werkzeug:192.168.100.106---[07/Sep/2012 13:57:47]“GET/favicon.ico HTTP/1.1”404-
/opt/openerp/server/openerp/osv/fields.py(554)get()
->for r in obj.pool.get(self.\u obj)。\u read\u flat(cr,user,ids2,[self.\u fields\u id],context=context,load=''classic\u write'):
(Pdb)ids2
[]
(Pdb)c
/opt/openerp/server/openerp/osv/fields.py(554)get()
->for r in obj.pool.get(self.\u obj)。\u read\u flat(cr,user,ids2,[self.\u fields\u id],context=context,load=''classic\u write'):
(Pdb)ids2
[]
(Pdb)c
/opt/openerp/server/openerp/osv/fields.py(554)get()
->for r in obj.pool.get(self.\u obj)。\u read\u flat(cr,user,ids2,[self.\u fields\u id],context=context,load=''classic\u write'):
(Pdb)ids2
[]
(Pdb)c
2012-09-0713:58:03198 17516错误?openerp.osv.osv:未捕获异常
回溯(最近一次呼叫最后一次):
文件/opt/openerp/server/openerp/osv/osv.py”,第121行,在包装器中
返回f(self、dbname、*args、**kwargs)
文件“/opt/openerp/server/openerp/osv/osv.py”,执行中第176行
res=self.execute\u cr(cr,uid,obj,method,*args,**kw)
文件“/opt/openerp/server/openerp/osv/osv.py”,第164行,执行
返回getattr(对象、方法)(cr、uid、*args、**kw)
文件“/opt/openerp/server/openerp/osv/orm.py”,第3381行,已读
result=self.\u read\u flat(cr、用户、选择、字段、上下文、加载)
文件/opt/openerp/server/openerp/osv/orm.py”,第3504行,在平面读图中
res2=self.\u列[f].get(cr,self,ids,f,user,context=context,values=res)
文件“/opt/openerp/server/openerp/osv/fields.py”,get中第552行
ids2=obj.pool.get(self.\u obj).search(cr,user,self.\u domain+[(self.\u fields\u id,'in',id)],limit=self.\u limit,context=context)
AttributeError:“非类型”对象没有属性“搜索”
2012-09-07 13:58:03202 17516错误?openerp.netsvc:“非类型”对象没有“搜索”属性
2012-09-0713:58:03208 17516信息?werkzeug:192.168.100.106---[07/Sep/2012 13:58:03]“POST/web/dataset/search\u read HTTP/1.1”200-
问题在于self.\u obj
返回pool
中不存在的值,因此当您尝试使用get
方法从pool
获取对象时,它会尝试从dict
中查找键,但由于pool
中不存在该键,它会返回None
如果这不会在GTK或WEB中得到错误,那么请尝试在所有客户端中显示self.\u obj
。'NoneType'对象没有属性'search'意味着它在池中找不到您的类。get(self.\u obj)您的学校。学生代码是什么?你确定你把它包括在init.py中,并且在你的班上有一个_name='school.student'吗?@Timothy:是的,我知道这意味着什么。代码相当长,有一个_name='school.student',它包含在init.py中。正如我所说,表单在web客户端和gtk客户端中都可以很好地打开。上面提到的错误只会出现在移动客户端的学生表单上。感谢Lafada的问题改进。我不明白你写的最后一句话:“如果这不会在GTK或WEB中得到错误,那么请尝试在所有客户端中显示self.\u obj。”。您能详细说明一下吗?如果您有服务器访问权限,请检查每个客户端的self.\u obj
值是多少。值可能会更改,或者pool
可能不包含该对象。我在ids2=obj.pool.get(self.\u obj).search(cr,user,self.\u domain+[(self.\u fields\u id,'in',id)],limit=self.\u limit,context=context)之后设置了pdb跟踪
和打印的self.\u obj在3个客户端上显示为ir.actions.act\u window.view
。另外,所有3个客户端上的ids2
也是[]
。拉法达,这能告诉你什么吗?顺便说一下,ids2
还返回了一些基本组件(如采购/通讯簿/供应商)的[]
,并返回了大多数其他组件的正常dict。对于移动客户端,请再次检查。因为如果它以[]
的形式返回ids2
,那么肯定没有错误。正如您所说的,错误显示为None-type对象没有属性搜索
意味着它obj.pool.get(self.\u obj)
返回None
。同时提供完整的回溯,以便了解更多信息。只需使用完整的回溯更新您的答案。我与移动客户端进行了重新检查,ids2
总是以[]
的形式出现。我用回溯编辑了我的答案。这是完整的回溯还是整个日志?以前未显示任何错误或警告。