odoo - 我如何解决 Odoo 中的错误 ir.actions.view
问题描述
几天前,我开始在我的工作中学习 Odoo,我正在尝试构建一个自定义应用程序,当我创建这样的视图时
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record id="form_action" model="ir.ui.view">
<field name="name">Botle</field>
<field name="model">botle.botle</field>
<field name="arch" type="xml">
<form string="">
<field name="epc"/>
<field name="pc"/>
<field name="crc"/>
</form>
</field>
</record>
<menuitem name="botle" id="menu_botle"/>
<menuitem name="sub_botle" id="submenu_botles" parent="menu_botle" action="form_action"/>
</data>
</odoo>
但是当我升级我的应用程序时,会出现错误“ir.actions.view”,我会发布回溯,以便您获得有关此错误的更多信息
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/api.py", line 1049, in get
value = self._data[key][field][record._ids[0]]
KeyError: 333
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/fields.py", line 1006, in __get__
value = record.env.cache.get(record, self)
File "/opt/odoo12/odoo/odoo/api.py", line 1051, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.module.module(333,).menus_by_module', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/api.py", line 1049, in get
value = self._data[key][field][record._ids[0]]
KeyError: 66
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/fields.py", line 1006, in __get__
value = record.env.cache.get(record, self)
File "/opt/odoo12/odoo/odoo/api.py", line 1051, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.ui.menu(66,).complete_name', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/api.py", line 1049, in get
value = self._data[key][field][record._ids[0]]
KeyError: 66
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/fields.py", line 1006, in __get__
value = record.env.cache.get(record, self)
File "/opt/odoo12/odoo/odoo/api.py", line 1051, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('ir.ui.menu(66,).parent_id', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo12/odoo/odoo/http.py", line 656, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo12/odoo/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo12/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/opt/odoo12/odoo/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo12/odoo/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo12/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo12/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo12/odoo/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/opt/odoo12/odoo/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
File "/opt/odoo12/odoo/addons/web/controllers/main.py", line 966, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo12/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo12/odoo/odoo/api.py", line 759, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/opt/odoo12/odoo/odoo/api.py", line 746, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-67>", line 2, in button_immediate_upgrade
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, *args, **kwargs)
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 627, in button_immediate_upgrade
return self._button_immediate_function(type(self).button_upgrade)
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 557, in _button_immediate_function
function(self)
File "<decorator-gen-68>", line 2, in button_upgrade
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, *args, **kwargs)
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 647, in button_upgrade
self.browse(module.id for module in todo).write({'state': 'to upgrade'})
File "/opt/odoo12/odoo/odoo/models.py", line 3379, in write
self.recompute()
File "/opt/odoo12/odoo/odoo/models.py", line 5296, in recompute
vals = {n: rec[n] for n in ns}
File "/opt/odoo12/odoo/odoo/models.py", line 5296, in <dictcomp>
vals = {n: rec[n] for n in ns}
File "/opt/odoo12/odoo/odoo/models.py", line 5143, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/opt/odoo12/odoo/odoo/fields.py", line 1010, in __get__
self.determine_value(record)
File "/opt/odoo12/odoo/odoo/fields.py", line 1099, in determine_value
self.compute_value(recs)
File "/opt/odoo12/odoo/odoo/fields.py", line 1077, in compute_value
self._compute_value(records)
File "/opt/odoo12/odoo/odoo/fields.py", line 1068, in _compute_value
getattr(records, self.compute)()
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 235, in _get_views
module.menus_by_module = "\n".join(sorted(m.complete_name for m in browse('ir.ui.menu')))
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_module.py", line 235, in <genexpr>
module.menus_by_module = "\n".join(sorted(m.complete_name for m in browse('ir.ui.menu')))
File "/opt/odoo12/odoo/odoo/fields.py", line 1010, in __get__
self.determine_value(record)
File "/opt/odoo12/odoo/odoo/fields.py", line 1119, in determine_value
self.compute_value(record)
File "/opt/odoo12/odoo/odoo/fields.py", line 1077, in compute_value
self._compute_value(records)
File "/opt/odoo12/odoo/odoo/fields.py", line 1068, in _compute_value
getattr(records, self.compute)()
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_ui_menu.py", line 51, in _compute_complete_name
menu.complete_name = menu._get_full_name()
File "/opt/odoo12/odoo/odoo/addons/base/models/ir_ui_menu.py", line 57, in _get_full_name
if self.parent_id:
File "/opt/odoo12/odoo/odoo/fields.py", line 1010, in __get__
self.determine_value(record)
File "/opt/odoo12/odoo/odoo/fields.py", line 1113, in determine_value
record._prefetch_field(self)
File "/opt/odoo12/odoo/odoo/models.py", line 2860, in _prefetch_field
result = records.read([f.name for f in fs], load='_classic_write')
File "/opt/odoo12/odoo/odoo/models.py", line 2798, in read
self._read_from_database(stored, inherited)
File "/opt/odoo12/odoo/odoo/models.py", line 2951, in _read_from_database
values = [convert(value, target, validate=False) for value in values]
File "/opt/odoo12/odoo/odoo/models.py", line 2951, in <listcomp>
values = [convert(value, target, validate=False) for value in values]
File "/opt/odoo12/odoo/odoo/fields.py", line 2042, in convert_to_cache
if record.env[res_model].browse(int(res_id)).exists():
File "/opt/odoo12/odoo/odoo/api.py", line 831, in __getitem__
return self.registry[model_name]._browse((), self)
File "/opt/odoo12/odoo/odoo/modules/registry.py", line 176, in __getitem__
return self.models[model_name]
KeyError: 'ir.actions.view'
有人能帮我吗 ??
提前致谢
解决方案
menuitem
s 属性action
需要对模型记录的引用ir.actions.*
(大多数情况下ir.actions.act_window
是“打开窗口操作”)。但是您的 menuitem 正在引用表单视图 ( ir.ui.view
) 记录。
因此,请查看应用程序队列中的 Odoo 文档/代码,以了解如何创建操作。
推荐阅读
- c# - ASP.NET Core Api-Gateway 中间件
- xml - “出站命名空间与任何给定模式都不匹配”,发送提取的 XML 消息时
- java - 如何识别 Java 代码中的操作系统中断并执行一些操作?
- javascript - 无法使用 MediaStreamTrack 关闭设备手电筒
- powershell - PowerShell中的更多条件而不是逻辑返回
- reactjs - 如何在 react redux 应用程序中正确关闭 axios 请求?
- python-2.7 - ndb 结构化属性的意外行为
- python - django 日期时间输入
- c++ - c++中使用stl的邻接图
- excel - 根据两个下拉列表更改图表,其中包含来自多个工作表的数据