跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. odoo 10.0 继承问题

odoo 10.0 继承问题

已定时 已固定 已锁定 已移动 Odoo 新手求助
15 帖子 5 发布者 15.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • B 离线
    B 离线
    BraidTim
    写于 最后由 digitalsatori 编辑
    #1

    按着官网的流程学习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 条回复 最后回复
    0
    • digitalsatoriD 离线
      digitalsatoriD 离线
      digitalsatori 管理员
      写于 最后由 digitalsatori 编辑
      #2

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

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

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

      【上海先安科技】(tony AT openerp.cn)

      B 1 条回复 最后回复
      0
      • B 离线
        B 离线
        BraidTim
        写于 最后由 BraidTim 编辑
        #3

        先谢谢您帮我改代码格式,以后我会注意。
        我的理解是如果改了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 条回复 最后回复
        0
        • B 离线
          B 离线
          BraidTim
          在 回复了 digitalsatori 最后由 编辑
          #4

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

          1 条回复 最后回复
          0
          • digitalsatoriD 离线
            digitalsatoriD 离线
            digitalsatori 管理员
            写于 最后由 编辑
            #5

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

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

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

            【上海先安科技】(tony AT openerp.cn)

            1 条回复 最后回复
            0
            • 鲍 离线
              鲍 离线
              鲍永道
              写于 最后由 编辑
              #6

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

              B 1 条回复 最后回复
              0
              • B 离线
                B 离线
                BraidTim
                在 回复了 鲍永道 最后由 编辑
                #7

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

                鲍 2 条回复 最后回复
                0
                • digitalsatoriD 离线
                  digitalsatoriD 离线
                  digitalsatori 管理员
                  写于 最后由 编辑
                  #8

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

                  【上海先安科技】(tony AT openerp.cn)

                  1 条回复 最后回复
                  0
                  • 鲍 离线
                    鲍 离线
                    鲍永道
                    在 回复了 BraidTim 最后由 编辑
                    #9

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

                    1 条回复 最后回复
                    0
                    • 鲍 离线
                      鲍 离线
                      鲍永道
                      在 回复了 BraidTim 最后由 编辑
                      #10

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

                      B 1 条回复 最后回复
                      0
                      • B 离线
                        B 离线
                        BraidTim
                        在 回复了 鲍永道 最后由 编辑
                        #11

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

                        鲍 1 条回复 最后回复
                        0
                        • 鲍 离线
                          鲍 离线
                          鲍永道
                          在 回复了 BraidTim 最后由 编辑
                          #12

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

                          1 条回复 最后回复
                          0
                          • JoshuaJ 离线
                            JoshuaJ 离线
                            Joshua 管理员
                            写于 最后由 编辑
                            #13

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

                            【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                            1 条回复 最后回复
                            0
                            • 火 离线
                              火 离线
                              火灬炎灬焱灬燚
                              写于 最后由 编辑
                              #14

                              卸载了重装就没问题了

                              1 条回复 最后回复
                              0
                              • digitalsatoriD 离线
                                digitalsatoriD 离线
                                digitalsatori 管理员
                                写于 最后由 digitalsatori 编辑
                                #15

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

                                卸载了重装就没问题了

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

                                【上海先安科技】(tony AT openerp.cn)

                                1 条回复 最后回复
                                0

                                • 登录

                                • 没有帐号? 注册

                                • 登录或注册以进行搜索。
                                • 第一个帖子
                                  最后一个帖子
                                0
                                • 版块
                                • 标签
                                • 热门
                                • 用户
                                • 群组