当我继承布尔字段odoo10引发错误时?

时间:2018-12-17 13:43:23

标签: python inheritance odoo odoo-10

例如,模型中很好地添加了“ reonp”,但是当我尝试添加“ gradjanin”时,Odoo 10会引发错误

image of code/error

我正在尝试重新启动服务器

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...

4 个答案:

答案 0 :(得分:1)

这实际上是在使用新字段扩展模型res.partner时遇到的经典错误。

启动Odoo服务器时,每个模块的python文件都会被“加载”,因此您当然也要在res.partner上添加新字段。但这仅在python方面,或者在应用程序本身上更好。现在,尝试使用该应用程序或“在Odoo的webclient中加载某些内容”将尝试从数据库中加载数据,而新字段没有相应的列。

例如登录名。登录时,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实例。在Odoo V11 +中,参数--no-xmlrpc将是--no-http

在数据库中告诉Odoo以更新模块/应用。

UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';

之后,只需重新启动Odoo。

还是棘手的方式

只需进入“应用程序”菜单并打开您的模块/应用程序。重新启动Odoo并更新模块/应用程序。这是最快的方法,但是您猜到了,有时您会忘记这样做。而且只有在收到错误之前它才有效;-)

答案 1 :(得分:0)

在此添加之前,取决于res.partner的清单。

'depends': ['base'],

并更新模块。再试一次!

答案 2 :(得分:0)

我建议使用此SQL查询将其手动添加到“ res_partner”:

ALTER TABLE res_partner 
    ADD COLUMN gradjanin BOOLEAN;

您也遇到'res_users'这个问题,不需要重启服务。

答案 3 :(得分:0)

由于 res_partner 模型属于odoo 基本模块,因此,每当您将基本模型继承到自定义模块时,请尝试在升级该模块的同时启动 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