Dej*_*vic 2 python inheritance odoo odoo-10
例如,'reonp' 是一个很好地添加到模型中的,但是当我尝试添加一个 'gradjanin' 时,Odoo 10 引发了一个错误

我试图重新启动服务器
py
class komPartnerrReon(models.Model):
_inherit = 'res.partner'
reonp = fields.Many2one('kom.reon')
gradjanin = fields.Boolean('Gradjanin', default=False) #There was an error after adding this line of code
Run Code Online (Sandbox Code Playgroud)
错误
File "C:\odoo-10.0\odoo\sql_db.py", line 231, in execute
res = self._obj.execute(query, params)
ProgrammingError: column res_partner.gradjanin does not exist
LINE 1: ...id" as "parent_id","res_partner"."name" as "name","res_partn...
Run Code Online (Sandbox Code Playgroud)
这实际上是您res.partner使用新字段扩展模型时遇到的经典错误。
在启动 Odoo 服务器时,每个模块 python 文件都将被“加载”,所以当然你的新字段res.partner也将被加载。但这只是在 python 方面或应用程序本身更好。现在尝试使用该应用程序或“在 Odoo 的网络客户端中加载某些内容”将尝试从数据库加载数据,其中新字段没有相应的列。
例如登录。登录时,Odoo 将加载正在登录的用户。模型res.users继承了整个模型res.partner,因此 Odoo 会尝试res.partner从数据库加载数据。并繁荣错误。
如果已经登录,也可能发生这种情况。例如,在模型的公式视图中带有 chatter。喋喋不休会加载追随者,他们是合作伙伴,因此会引发错误。
你能做些什么来解决这个问题?
在服务器启动时更新模块
with 参数-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 并更新模块/应用程序。这是最快的方法,但你猜对了,有时你会忘记去做。它仅在您收到错误之前有效;-)