这实际上是扩展模型时遇到的经典错误res.partner
与新领域。
启动 Odoo 服务器时,每个模块 python 文件都会被“加载”,所以当然你的新字段res.partner
, 也。但这只是在 python 方面或者在应用程序本身方面更好。现在尝试使用该应用程序或“在 Odoo 的网络客户端中加载某些内容”将尝试从数据库加载数据,其中新字段没有相应的列。
例如登录。登录时,Odoo 将加载正在登录的用户。模型res.users
继承整个模型res.partner
,以便 Odoo 尝试加载res.partner
来自数据库的数据。并发出错误。
如果已经登录,也可能会发生这种情况。例如,在带有颤动的模型的公式视图中。聊天会加载追随者,这些追随者是合作伙伴,因此会引发错误。
你能做什么来解决这个问题?
在服务器启动时更新模块
带参数-u
(如果系统中有多个数据库-d
)
odoo -c <path_to_config> -u my_module -d my_database
如果那不可能,
例如,在生产系统中或者因为 Odoo 作为服务启动,请尝试启动第二个实例,该实例将仅更新模块并立即停止。
odoo -c <path_to_config> -u my_module -d my_database --max-cron-threads=0 --stop-after-init --no-xmlrpc
这就像一个“自我毁灭”的无头 Odoo 实例。参数--no-xmlrpc
将--no-http
在 Odoo V11+ 中。
告诉数据库中的 Odoo 更新模块/应用程序。
UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';
之后重新启动 Odoo 即可。
或者棘手的方法:
只需进入“应用程序”菜单并打开您的模块/应用程序。重新启动 Odoo 并更新模块/应用程序。这是最快的方法,但你猜对了,有时你会忘记这样做。而且只有在出现错误之前它才起作用;-)