如何解决 res_partner.<column> 列在 Odoo 中不存在的问题?
How to solve column res_partner.<column> does not exist in Odoo?
例如,'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
错误
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...
在此之前,添加取决于 res.partner
的清单。
'depends': ['base'],
并更新模块。再试一次!
我建议使用此 SQL 查询将其手动添加到 'res_partner' :
ALTER TABLE res_partner
ADD COLUMN gradjanin BOOLEAN;
您'res_users'也遇到了这个问题,不需要重启服务。
这实际上是您在使用新字段扩展模型 res.partner
时遇到的典型错误。
在启动 Odoo 服务器时,每个模块 python 文件都将是 "loaded" 所以当然你在 res.partner
上的新字段也是。但这仅在 python 方面或在应用程序本身方面更好。现在尝试使用应用程序或 "loading something in Odoo's webclient" 将尝试从数据库加载数据,其中新字段没有相应的列。
例如登录。在登录时,Odoo 将加载正在登录的用户。模型 res.users
继承了整个模型 res.partner
,因此 Odoo 会尝试从数据库加载 res.partner
数据。并发出错误消息。
如果已经登录,也可能会发生这种情况。例如,在带有聊天的模型的公式视图中。喋喋不休加载追随者,他们是合作伙伴,所以 boom 错误。
你能做些什么来解决这个问题?
在服务器启动时更新模块
带参数-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
这就像一个 "self-destroying" 无头 Odoo 实例。参数 --no-xmlrpc
在 Odoo V11+ 中将是 --no-http
。
告诉Odoo在数据库中更新一个module/app.
UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';
之后重启 Odoo。
或取巧:
只需进入“应用程序”菜单并打开 module/app。重启 Odoo 并更新 module/app。这是最快的方法,但你猜对了,你有时会忘记这样做。而且它只在你收到错误之前起作用;-)
因为 res_partner 模型属于 odoo base 模块 所以每当你继承 base 模型 到自定义模块,尝试在启动 odoo 服务 时升级模块,在这种情况下:
语法:
py "FILE__PATH_To_odoo-bin" --conf "FILE__PATH_To_odoo.conf" -u MY_CUSTOM_MODULE_NAME
示例:
py "C:\odoo13\odoo-bin" --conf "C:\odoo13\odoo.conf" -u my_module
例如,'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
错误
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...
在此之前,添加取决于 res.partner
的清单。
'depends': ['base'],
并更新模块。再试一次!
我建议使用此 SQL 查询将其手动添加到 'res_partner' :
ALTER TABLE res_partner
ADD COLUMN gradjanin BOOLEAN;
您'res_users'也遇到了这个问题,不需要重启服务。
这实际上是您在使用新字段扩展模型 res.partner
时遇到的典型错误。
在启动 Odoo 服务器时,每个模块 python 文件都将是 "loaded" 所以当然你在 res.partner
上的新字段也是。但这仅在 python 方面或在应用程序本身方面更好。现在尝试使用应用程序或 "loading something in Odoo's webclient" 将尝试从数据库加载数据,其中新字段没有相应的列。
例如登录。在登录时,Odoo 将加载正在登录的用户。模型 res.users
继承了整个模型 res.partner
,因此 Odoo 会尝试从数据库加载 res.partner
数据。并发出错误消息。
如果已经登录,也可能会发生这种情况。例如,在带有聊天的模型的公式视图中。喋喋不休加载追随者,他们是合作伙伴,所以 boom 错误。
你能做些什么来解决这个问题?
在服务器启动时更新模块
带参数-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
这就像一个 "self-destroying" 无头 Odoo 实例。参数 --no-xmlrpc
在 Odoo V11+ 中将是 --no-http
。
告诉Odoo在数据库中更新一个module/app.
UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';
之后重启 Odoo。
或取巧:
只需进入“应用程序”菜单并打开 module/app。重启 Odoo 并更新 module/app。这是最快的方法,但你猜对了,你有时会忘记这样做。而且它只在你收到错误之前起作用;-)
因为 res_partner 模型属于 odoo base 模块 所以每当你继承 base 模型 到自定义模块,尝试在启动 odoo 服务 时升级模块,在这种情况下:
语法: py "FILE__PATH_To_odoo-bin" --conf "FILE__PATH_To_odoo.conf" -u MY_CUSTOM_MODULE_NAME
示例:
py "C:\odoo13\odoo-bin" --conf "C:\odoo13\odoo.conf" -u my_module