我在Odoo 10上工作了几个月后,我制作了一个依赖于某些Odoo模块的自定义模块。 今天我想创建一个用户手册,因为我的工作几乎完成了,所以我决定创建一个新的数据库,从零开始,并能够一步一步解释如何安装模块以及它如何工作... The问题是,我得到这个错误:Odoo 10安装模块时出现KeyError
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo-10.0/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo-10.0/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 933, in __call__
return self.method(*args, **kw)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo-10.0/addons/web/controllers/main.py", line 882, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo/odoo-10.0/addons/web/controllers/main.py", line 870, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo/odoo-10.0/odoo/api.py", line 681, in call_kw
return call_kw_multi(method, model, args, kwargs)
File "/opt/odoo/odoo-10.0/odoo/api.py", line 672, in call_kw_multi
result = method(recs, *args, **kwargs)
File "/opt/odoo/odoo-10.0/odoo/addons/base/module/module.py", line 410, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/opt/odoo/odoo-10.0/odoo/addons/base/module/module.py", line 484, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/opt/odoo/odoo-10.0/odoo/modules/registry.py", line 78, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 339, in load_modules
loaded_modules, update_module)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 135, in load_module_graph
registry.setup_models(cr, partial=True)
File "/opt/odoo/odoo-10.0/odoo/modules/registry.py", line 293, in setup_models
model._setup_fields(partial)
File "/opt/odoo/odoo-10.0/odoo/models.py", line 2836, in _setup_fields
field.setup_full(self)
File "/opt/odoo/odoo-10.0/odoo/fields.py", line 491, in setup_full
self._setup_related_full(model)
File "/opt/odoo/odoo-10.0/odoo/fields.py", line 528, in _setup_related_full
field = target._fields[name]
KeyError: 'workorder_id'
现在我不知道,但似乎有一个问题,当Odoo应导入我的文件,因为在数据库中根本没有创造我的表,所以我不不知道它们是否因为这个错误而未被创建,或者如果这个错误是因为我的表不在数据库中。 无论如何,我试图评论这个workorder_id出现在哪里,但它没有改变任何东西,错误仍然存在,我尝试着重新尝试重新启动服务器,但几乎没有任何改变。 我已经看到很多关于继承的主题,但我不认为这是事实,workorder_id是我自己的领域,它用在我自己的模型中。
这里是使用了这一领域的车型:
class ControlPart(models.Model):
"""
Modèle pour la vue de la pièce contrôlée.
"""
_name = 'spc.control.part'
name = fields.Char(string='Piece name')
starting_date = fields.Date(string='Starting date')
ending_date = fields.Date(string='Ending date')
basket_position = fields.Char(string='Basket position')
piece_number = fields.Integer(string='Piece number')
note = fields.Text(string='Notes')
# operation_workorder_id = fields.Many2one('spc.fabrication.order', string='Fabrication order',
# related='operation_id.workorder_id')
# operation_workorder_id_product_id = fields.Many2one('product.product', string='Product code',
# related='operation_id.workorder_id.product_id')
operation_id = fields.Many2one('spc.operation', ondelete='restrict', string='Operation')
person_id = fields.Many2one('spc.person', ondelete='restrict', string='Operator')
workcenter_id = fields.Many2one('mrp.workcenter', ondelete='restrict', string='Workcenter code')
control_measure_ids = fields.One2many('spc.control.measure', 'control_part_id', ondelete='restrict', string='Measures')
class Operation (models.Model):
"""
Modèle pour la vue des opérations.
"""
_name = 'spc.operation'
name = fields.Char(string='Operation name')
number = fields.Integer(string='Number')
pcerp_number = fields.Char(string='Pro Concept number')
#workorder_id = fields.Many2one('spc.fabrication.order', ondelete='restrict', string='Fabrication Order')
感谢您的时间!
编辑: 因此,经过一段时间寻找问题,与我的同事,我们并没有真正发现什么是错的。我们假设Odoo在重新启动服务时没有重新加载文件,因为我们试图在文件中放入一些错误的代码,并且Odoo完全忽略了它。 也许某些东西仍然在内存中,并且它使用相同的文件,所以我们终于通过杀死所有进程来设法解决问题。 我希望这仍然可以帮助。
你在o2m领域使用过吗? – Cherif
不,我只在Many2one字段 – Isariamkia
中使用它,只是创建这个字段不会导致这个错误,你在哪里使用它。 – Cherif