2016-12-10 1 views
0

なぜ私にこのようなエラーが出ますか? request.sessionなしで正常に動作しますが、request.sessionの更新中にこのエラーが生成されます。なぜOdooがupdate request.sessionを更新している間にPicklingErrorを返すのですか

@api.multi 
    def graph_view(self): 
     vals = {} 
     if self.x_axis and self.y_axis and self.range_period and self.range_selection: 
      vals.update({'id': self.id, 
         'x_axis': self.x_axis, 
         'y_axis': self.y_axis, 
         'range_period': self.range_period, 
         'range_selection': self, 
         'graph_type': 'pie', 
         'model': self 
     else: 
      raise Warning('Please check the graph') 
     request.session.update(vals) 
     res = self.env['ir.model.data'].get_object_reference('pan_pos', 'graph_form_view') 
     return { 
      'view_type': 'form', 
      'view_mode': 'form', 
      'view_id': res[1], 
      'res_model': 'report.sales', 
      'type': 'ir.actions.act_window', 
      'target': 'current' 
     } 

エラーログ:

2016-12-10 09:16:09,960 31071 ERROR pan_28_11 werkzeug: Error on request: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 180, in run_wsgi 
    execute(self.server.app) 
    File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 168, in execute 
    application_iter = app(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/service/server.py", line 291, in app 
    return self.app(e, s) 
    File "/home/acespritech/ERP/odoo_8/openerp/service/wsgi_server.py", line 216, in application 
    return application_unproxied(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/service/wsgi_server.py", line 202, in application_unproxied 
    result = handler(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/http.py", line 1292, in __call__ 
    return self.dispatch(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/http.py", line 1266, in __call__ 
    return self.app(environ, start_wrapped) 
    File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 591, in __call__ 
    return self.app(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/http.py", line 1266, in __call__ 
    return self.app(environ, start_wrapped) 
    File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 591, in __call__ 
    return self.app(environ, start_response) 
    File "/home/acespritech/ERP/odoo_8/openerp/http.py", line 1444, in dispatch 
    response = self.get_response(httprequest, result, explicit_session) 
    File "/home/acespritech/ERP/odoo_8/openerp/http.py", line 1389, in get_response 
    self.session_store.save(httprequest.session) 
    File "/usr/lib/python2.7/dist-packages/werkzeug/contrib/sessions.py", line 244, in save 
    dump(dict(session), f, HIGHEST_PROTOCOL) 
    File "/usr/lib/python2.7/pickle.py", line 1376, in dump 
    Pickler(file, protocol).dump(obj) 
    File "/usr/lib/python2.7/pickle.py", line 224, in dump 
    self.save(obj) 
    File "/usr/lib/python2.7/pickle.py", line 286, in save 
    f(self, obj) # Call unbound method with explicit self 
    File "/usr/lib/python2.7/pickle.py", line 655, in save_dict 
    self._batch_setitems(obj.iteritems()) 
    File "/usr/lib/python2.7/pickle.py", line 687, in _batch_setitems 
    save(v) 
    File "/usr/lib/python2.7/pickle.py", line 331, in save 
    self.save_reduce(obj=obj, *rv) 
    File "/usr/lib/python2.7/pickle.py", line 396, in save_reduce 
    save(cls) 
    File "/usr/lib/python2.7/pickle.py", line 300, in save 
    self.save_global(obj) 
    File "/usr/lib/python2.7/pickle.py", line 754, in save_global 
    (obj, module, name)) 
PicklingError: Can't pickle <class 'openerp.api.sales'>: it's not found as openerp.api.sales 

私が解決するのに役立ちます。おかげさまで

+0

コードに構文エラーがあります。私はあなたの質問を編集しました。あなたが意図したものであることを願っていますか? – danidee

+0

あなたは正確に何をしようとしていますか?問題は、 'werkzeug'がunpicklableオブジェクト(この場合は' openerp.api.sales'のインスタンス)をpickleしようとしていることです。 Pythonは、クラスをpickleすることはできません、これを読むhttps://docs.python.org/2/library/pickle.html#what-c​​an-be-pickled-and-unpickledそれは助けのはずです – danidee

+0

ありがとう@danidee、私エラーが発生しました。私が準備している辞書には、このエラーを生成しているオブジェクトタイプの値が含まれています。文字列に変換しました。 –

答えて

0

辞書

ヴァルス

が間違った値が含まれているは、自己のレコードが見つからなかった場合にのみ、オブジェクトモデルを与えるモデルオブジェクトを与え、それは酸洗ためのエラーを与えますpickleオブジェクトはモデル型オブジェクトをサポートできません。

タイプキャストによってオブジェクトモデルへの文字列に変換されます。エラーを解決します。

関連する問題