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 ErrorThe 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那边有什么问题。 -
@BraidTIm 在 odoo 10.0 继承问题 中说:
我的理解是如果改了py文件就需要重启服务器,如果改了xml就需要更新模块。
你的理解不完全正确,改变py文件需要重启服务器没错,但是后面那句有问题。应该是涉及数据库结构或内容改变需要更新模块。改xml涉及改变数据库内容,所以需要更新模块。
而改变实体类的字段属性,既改变了py文件又改变了数据库结构,所以需要重启服务器,同时更新模块。 -
你除了重启服务器以外,还需要“Upgrade” 你所写的模块
-