1

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, 
                           self._domain + [(self._fields_id, 'in', ids)], 
                           limit=self._limit, context=context)

AttributeError: 'NoneType' object has no attribute 'search' 問題のオブジェクトがここにあることを取得していないかのようにschool.student

Web または gtk クライアントを介した同様のエラーはなく、新しいモバイル クライアントのみです。
school.course や などの他のオブジェクトにアクセスしても、このようなエラーは発生しませんschool.course.subjects。開かないschool.studentの1つのフォームビューだけです。なぜこれが起こっているのかについてのアイデアはありますか?

編集: トレースバック

2012-09-07 13:57:47,199 17516 INFO ? 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._obj)._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
(Pdb) ids2
[]
(Pdb) c
> /opt/openerp/server/openerp/osv/fields.py(554)get()
-> for r in obj.pool.get(self._obj)._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
(Pdb) ids2
[]
(Pdb) c
> /opt/openerp/server/openerp/osv/fields.py(554)get()
-> for r in obj.pool.get(self._obj)._read_flat(cr, user, ids2, [self._fields_id], context=context, load='_classic_write'):
(Pdb) ids2
[]
(Pdb) c
2012-09-07 13:58:03,198 17516 ERROR ? openerp.osv.osv: Uncaught exception
Traceback (most recent call last):
File "/opt/openerp/server/openerp/osv/osv.py", line 121, in wrapper
return f(self, dbname, *args, **kwargs)
File "/opt/openerp/server/openerp/osv/osv.py", line 176, in execute
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/opt/openerp/server/openerp/osv/osv.py", line 164, in execute_cr
return getattr(object, method)(cr, uid, *args, **kw)
File "/opt/openerp/server/openerp/osv/orm.py", line 3381, in read
result = self._read_flat(cr, user, select, fields, context, load)
File "/opt/openerp/server/openerp/osv/orm.py", line 3504, in _read_flat
res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res)
File "/opt/openerp/server/openerp/osv/fields.py", line 552, in get
ids2 = obj.pool.get(self._obj).search(cr, user, self._domain + [(self._fields_id, 'in', ids)], limit=self._limit, context=context)
AttributeError: 'NoneType' object has no attribute 'search'
2012-09-07 13:58:03,202 17516 ERROR ? openerp.netsvc: 'NoneType' object has no attribute 'search'
2012-09-07 13:58:03,208 17516 INFO ? werkzeug: 192.168.100.106 - - [07/Sep/2012 13:58:03] "POST /web/dataset/search_read HTTP/1.1" 200 -

4

1 に答える 1

3

問題はself._obj、 にない値を返すことです。そのため、 メソッドを使用してpoolからオブジェクトを取得しようとすると、からキーを見つけようとしますが、そのキーが存在しないため、を返します。poolgetdictpoolNone

これで GTK や WEB でエラーが発生しない場合はself._obj、すべてのクライアントで表示してみてください。

于 2012-09-05T08:59:48.753 に答える