我从Odoo Apps网站购买了一个与Odoo CE版本12兼容的模块。
现在,我打算将其升级到Odoo CE版本13,而我正面临着这样的错误:
ImportError:无法从“ odoo.addons.web.controllers.main”(例如:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py)中导入名称“ binary_content”
回溯(最近通话最近一次):
文件_handle_exception中的“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”行624
return super(JsonRequest, self)._handle_exception(exception)
文件_handle_exception中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
第14行的文件“ E:\ Odoo \ homing_missile13 \ odoo \ tools \ pycompat.py”
raise value
文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”在第669行中发送
result = self._call_function(**self.params)
文件_call_function中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”
return checked_call(self.db, args, *kwargs)
包装中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ service \ model.py”,第93行
return f(dbname, args, *kwargs)
checked_call中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”,第339行
result = self.endpoint(*a, **kw)
在调用
中,文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”第915行return self.method(*args, **kw)
文件“ E:\ Odoo \ homing_missile13 \ odoo \ http.py”,第515行,位于response_wrap中
response = f(*args, **kw)
在呼叫按钮中的文件“ e:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py”,行1326
action = self._call_kw(model, method, args, kwargs)
_call_kw中的文件“ e:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py”,行1314
return call_kw(request.env[model], method, args, kwargs)
call_kw中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ api.py”,行
result = _call_kw_multi(method, model, args, kwargs)
_call_kw_multi中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ api.py”,第374行
result = method(recs, args, *kwargs)
“ _ mediamediate_install”中第2行的文件“”,
文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第72行,在check_and_log中
return method(self, args, *kwargs)
在button_immediate_install中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第463行
return self._button_immediate_function(type(self).button_install)
文件“ E:\ Odoo \ homing_missile13 \ odoo \ addons \ base \ models \ ir_module.py”,第573行,位于_button_immediate_function中
modules.registry.Registry.new(self._cr.dbname, update_module=True)
文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ registry.py”,第86行,位于新的
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第423行,位于load_modules中
loaded_modules, update_module, models_to_check)
文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第315行,位于load_marked_modules中
perform_checks=perform_checks, models_to_check=models_to_check
文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ loading.py”,第182行,位于load_module_graph中
load_openerp_module(package.name)
在load_openerp_module中的行382中的文件“ E:\ Odoo \ homing_missile13 \ odoo \ modules \ module.py”
__import__('odoo.addons.' + module_name)
中的第5行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents__init __。py”
from . import controllers
文件
中的第4行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents \ controllers__init __。py”from . import main
文件
中的第9行,文件“ e:\ odoo \ homing_missile13 \ custom_addons \ sync_documents \ controllers \ main.py”from odoo.addons.web.controllers.main import binary_content
ImportError:无法从“ odoo.addons.web.controllers.main”(例如:\ odoo \ homing_missile13 \ addons \ web \ controllers \ main.py)中导入名称“ binary_content”。
通过查看代码,我看到文件main.py的某些代码在版本13中已作废(我认为)>
从odoo.addons.web.controllers.main导入binary_content 来自odoo.addons.http_routing.models.ir_http导入段
那么你能帮助我吗?
Odoo CE版本13中binary_content的替代品是什么?
同样的问题。
除此之外,Pycharm还显示了odoo.addons.web和odoo.addons.http_routing上的错误。
任何帮助都很有用。
谢谢
答案 0 :(得分:2)
是的,Odoo-13有所更改。
您可以导入和使用此功能content_image
。slug
可用于“将字符串转换为可在URL路径中使用的字符串”,而您的功能则用于binary
键入内容操作。
谢谢
答案 1 :(得分:0)
只是为 Odoo 14 添加此答案,因为我找不到与版本 14 相关的任何内容。
就我而言,我必须像这样导入:
from odoo.addons.web.controllers.main import Binary
& 在代码中:
Binary.content_image
如 Dipen in this answer 所述。
另外,发现另一个有趣的事情,如 Niyas Raphy 所提到的 in this link,我也可以使用 binary_content
,而不是导入 request.env['ir.http'].sudo().binary_content(
。
查看 V13 中的一个用例:
status, headers, _content = request.env['ir.http'].sudo().binary_content( model='res.partner', id=partner_id, field='image_128', default_mimetype='image/png')