odoo 10.0 继承问题



  • 按着官网的流程学习building a module,在继承的地方服务器出错。
    官网教程:https://www.odoo.com/documentation/10.0/howtos/backend.html
    教程上说继承res.partner并增加instructor

    # -*- coding: utf-8 -*-
    from odoo import fields, models
    
    class Partner(models.Model):
        _inherit = 'res.partner'
    
        # Add a new column to the res.partner model, by default partners are not
        # instructors
        instructor = fields.Boolean("Instructor", default=False)
    
        session_ids = fields.Many2many('openacademy.session',
            string="Attended Sessions", readonly=True)
    

    但是重启服务器后显示:

    ProgrammingError: 错误:  字段 res_partner.instructor 不存在
    LINE 1: ..."."type" as "type","res_partner"."lang" as "lang","res_partn...
    

    我试了一下好像这里的定义只能重写,就是原来class里面有的属性,比如name。新建属性的话应该怎么写?


  • 管理员

    帮你编辑了一下帖子。请将代码部分用三个backtick (即 ``` )来包住,这样你的代码就能保持格式并且有语法加亮。

    修改实体类的字段属性会改变数据库的结构,所以对于这样的修改仅仅重启服务器是不够的, 还需要更新你的模块。就是在模块列表中找到你的自定义的模块并点击上面的“Upgrade”按钮。

    也可以在启动Odoo服务器时指定更新模块的参数,比如:
    odoo.py -d mydatabase -u my_custom_module



  • 先谢谢您帮我改代码格式,以后我会注意。
    我的理解是如果改了py文件就需要重启服务器,如果改了xml就需要更新模块。不过继承这里我重启了服务器就出错了,显示(Internal Server Error

    The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.)那个错误,所以应该还没有到更新模块那一步。
    是不是10.0的问题?因为教程有些文件路劲和教程也不一样。如果换8.0或者9.0会不会好一点?



  • @digitalsatori
    好像不是继承的问题,我自己建了一个类是能继承的,估计res.partner那边有什么问题。


  • 管理员

    @BraidTImodoo 10.0 继承问题 中说:

    我的理解是如果改了py文件就需要重启服务器,如果改了xml就需要更新模块。

    你的理解不完全正确,改变py文件需要重启服务器没错,但是后面那句有问题。应该是涉及数据库结构或内容改变需要更新模块。改xml涉及改变数据库内容,所以需要更新模块。
    而改变实体类的字段属性,既改变了py文件又改变了数据库结构,所以需要重启服务器,同时更新模块。



  • 你好,目前我也遇到这样的问题,你是怎么解决的?



  • @鲍永道
    更新表的结构似乎需要重启服务器,不清楚的话最好先删了模块,改完重启服务器再安装模块,这样错误少一点。不然改错了很可能odoo页面都进不去


  • 管理员

    你除了重启服务器以外,还需要“Upgrade” 你所写的模块



  • @braidtim 我在odoo上也重建过数据库,还是会报同样的错误。我现在也找不到错误在哪里,最主要的是我前面添加的几个字段就没有报错。这个问题还是比较严重,也请教了很多其他朋友,还是没有解决。



  • @braidtim 你好,我刚试了下你的方法,先卸载,然后新建好字段,然后重装,居然可以了,没有报错。
    但是这具体是什么原因造成的呢?能解释出来吗?


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待