Navigation

    Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    odoo 10.0 继承问题

    Odoo 新手求助
    5
    15
    13355
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      BraidTim last edited by digitalsatori

      按着官网的流程学习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。新建属性的话应该怎么写?

      1 Reply Last reply Reply Quote 0
      • digitalsatori
        digitalsatori 管理员 last edited by digitalsatori

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

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

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

        B 1 Reply Last reply Reply Quote 0
        • B
          BraidTim last edited by BraidTim

          先谢谢您帮我改代码格式,以后我会注意。
          我的理解是如果改了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会不会好一点?

          1 Reply Last reply Reply Quote 0
          • B
            BraidTim @digitalsatori last edited by

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

            1 Reply Last reply Reply Quote 0
            • digitalsatori
              digitalsatori 管理员 last edited by

              @BraidTIm 在 odoo 10.0 继承问题 中说:

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

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

              1 Reply Last reply Reply Quote 0
              • 鲍
                鲍永道 last edited by

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

                B 1 Reply Last reply Reply Quote 0
                • B
                  BraidTim @鲍永道 last edited by

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

                  鲍 2 Replies Last reply Reply Quote 0
                  • digitalsatori
                    digitalsatori 管理员 last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • 鲍
                      鲍永道 @BraidTim last edited by

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

                      1 Reply Last reply Reply Quote 0
                      • 鲍
                        鲍永道 @BraidTim last edited by

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

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          BraidTim @鲍永道 last edited by

                          @鲍永道
                          其实之前一直出错的时候我去数据库看了一下,发现有些表还残留着,其中列的属性也是之前的,新建的属性没加进去。
                          我感觉odoo是一个整体,比如视图那儿写错一句,可能整个服务器都进不去。所以删除之后再装,如果出错了也只不过是装不了,不会导致服务器直接崩溃,我一开始出发点只不过是这个。经常试过改了一些代码怎么看都没问题,但是却服务器崩溃,报的错误也看不大懂,最后只能重装或者新建数据库。
                          原因的话也许是新建字段,数据库那边alter table的时候可能有问题吧。具体的话可能要看底层逻辑了

                          鲍 1 Reply Last reply Reply Quote 0
                          • 鲍
                            鲍永道 @BraidTim last edited by

                            @braidtim 是的。我也是这么想的。目前在odoo里面,这个问题还是很频繁的,也不知道官方是怎么解释或是处理这个问题的。我目前在项目中总数会报不知道的错误,然后没有解决方案,就只能重装数据库,然后就ok了。

                            1 Reply Last reply Reply Quote 0
                            • Joshua
                              Joshua 管理员 last edited by

                              你可以先尝试按照@digitalsatori 说法启动的时候通过命令行更新代码试试
                              odoo.py -d mydatabase -u my_custom_module

                              1 Reply Last reply Reply Quote 0
                              • 火
                                火灬炎灬焱灬燚 last edited by

                                卸载了重装就没问题了

                                1 Reply Last reply Reply Quote 0
                                • digitalsatori
                                  digitalsatori 管理员 last edited by digitalsatori

                                  @火灬炎灬焱灬燚 在 odoo 10.0 继承问题 中说:

                                  卸载了重装就没问题了

                                  卸载了重装相当于重启服务器+更新模块 😄

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post