我创建了2个自定义模块,即“项目”和“实验室”。实验室模块有多个项目领域。项目模块具有实验室编号的many2one字段。
我为“实验室”模块做了一些修改,当我尝试更新它时,出现此错误:
Traceback (most recent call last):
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "C:\Odoo13\Odoo 13.0\server\odoo\tools\pycompat.py", line 14, in reraise
raise value
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\service\model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 915, in __call__
return self.method(*args, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 515, in response_wrap
response = f(*args, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\web\controllers\main.py", line 1326, in call_button
action = self._call_kw(model, method, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\web\controllers\main.py", line 1314, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-65>", line 2, in button_immediate_upgrade
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 72, in check_and_log
return method(self, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 634, in button_immediate_upgrade
return self._button_immediate_function(type(self).button_upgrade)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 573, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 86, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 419, in load_modules
force, status, report, loaded_modules, update_module, models_to_check)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 315, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 202, in load_module_graph
registry.init_models(cr, model_names, {'module': package.name}, new_install)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 348, in init_models
model._auto_init()
File "C:\Odoo13\Odoo 13.0\server\odoo\models.py", line 2482, in _auto_init
new = field.update_db(self, columns)
File "C:\Odoo13\Odoo 13.0\server\odoo\fields.py", line 2417, in update_db
comodel = model.env[self.comodel_name]
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 463, in __getitem__
return self.registry[model_name]._browse(self, (), ())
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 177, in __getitem__
return self.models[model_name]
KeyError: 'projects'
当我搜索此错误时,似乎没有将模块的依赖项放入“项目”。
因此,下一步放置了依赖项:
# any module necessary for this one to work correctly
'depends': ['base','mail','projects'],
现在我得到另一个错误,这是关于它自身的依赖性的说明:
Odoo Server Error
Traceback (most recent call last):
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "C:\Odoo13\Odoo 13.0\server\odoo\tools\pycompat.py", line 14, in reraise
raise value
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\service\model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 915, in __call__
return self.method(*args, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\http.py", line 515, in response_wrap
response = f(*args, **kw)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\web\controllers\main.py", line 1326, in call_button
action = self._call_kw(model, method, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\web\controllers\main.py", line 1314, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-66>", line 2, in button_immediate_upgrade
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 72, in check_and_log
return method(self, *args, **kwargs)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 634, in button_immediate_upgrade
return self._button_immediate_function(type(self).button_upgrade)
File "C:\Odoo13\Odoo 13.0\server\odoo\addons\base\models\ir_module.py", line 573, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 86, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 419, in load_modules
force, status, report, loaded_modules, update_module, models_to_check)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 315, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\loading.py", line 176, in load_module_graph
registry.setup_models(cr)
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 255, in setup_models
model._setup_fields()
File "C:\Odoo13\Odoo 13.0\server\odoo\models.py", line 2690, in _setup_fields
field.setup_full(self)
File "C:\Odoo13\Odoo 13.0\server\odoo\fields.py", line 431, in setup_full
self._setup_regular_full(model)
File "C:\Odoo13\Odoo 13.0\server\odoo\fields.py", line 2897, in _setup_regular_full
comodel = model.env[self.comodel_name]
File "C:\Odoo13\Odoo 13.0\server\odoo\api.py", line 463, in __getitem__
return self.registry[model_name]._browse(self, (), ())
File "C:\Odoo13\Odoo 13.0\server\odoo\modules\registry.py", line 177, in __getitem__
return self.models[model_name]
KeyError: 'laboratory'
并且当我更改依赖关系并添加自身模块时:
# any module necessary for this one to work correctly
'depends': ['base','mail','projects','laboratory'],
我收到500个内部服务器错误。
有人可以解释为什么会发生这种情况以及我该如何处理?预先感谢。
这是由于“循环依赖”。模块“项目”取决于“实验室”。但是“实验室”依赖于“项目”,因此变成了循环。结果,模块升级未完成,未添加字段,并且将显示KeyError。检查应用程序中的那些模块,仅使用“取消升级”按钮将这些模块卡住。我正在odoo 11上对此进行测试。
我可以想到一些解决此问题的方法。