为什么它给我这样的错误我只是更新简单的字典。 没有request.session它工作正常,但它在更新request.session时生成此错误。
@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 :(得分:0)
字典
<强>瓦尔斯强>
包含错误的值,self给出了模型对象,如果没有找到记录则只给出对象模型,并且由于pickle对象不能支持模型类型对象而给出了pickle错误。
通过类型转换将字符串转换为对象模型。解决错误。