跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. [已解决]odoo10 继承并扩展底层模块问题

[已解决]odoo10 继承并扩展底层模块问题

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 3 发布者 1.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • H 离线
    H 离线
    hui
    写于 最后由 hui 编辑
    #1

    继承odoo自带的res.partner,我想添加一些自定义字段,比如currency_id,

    现在的问题是,我每次新增字段,然后在别的model中引用,就会报错字段res.partner.currency_id找不到,

    目前的解决方法都要重新建数据库才能行,有没有比较方便的方法不用新建数据库的,还是我写的时候忽略什么问题了?

    H 1 条回复 最后回复
    0
    • H 离线
      H 离线
      hui
      在 回复了 hui 最后由 编辑
      #2

      [转载]

      针对继承的模块而言:
      res.partner模型属于底层模型,当服务启动时候,就会加载模型数据结构;因此,当自定义了一个新模块res.partner(或者说继承该模型),扩展了字段,没问题,可以正常安装,也可以正常使用!

      但是,但是!如果该新模块res.partner使用了一段时间后,假如你还想在该模块res.partner基础上继续扩展字段!
      对不起,这个时候,扩展后,重启odoo服务会报错,提示相关附件,找不到你扩展的那个字段。

      就是由于,服务启动的时候,附件模型py数据结构文件就会被加载,但是真正的此时数据库中还没有生成相应的字段,所以会报错。

      针对完全自定义的模块:
      而我们自己开发的模块在模型字段扩展后,为什么没有这个问题呢?

      这是因为,我们普通模块模型修改后,同样在odoo服务重启后,模型py文件会被加载,但是,我们可以进入应用列表,找到该模块,点击升级,数据库中就会生成新的表结构。

      结论:我们在扩展odoo底层自带模块模型字段的时候,要么一次定义好,要么使用一段时间后还想扩展,那么可以重新编写个单独的模块来扩展。

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

        这是有办法解决的,方法如下:
        1.在应用中,打开扩展模块。就是能看到升级/卸载的地方
        2.将代码更新到最新
        3.重启odoo服务
        4.点升级。特别注意,第一件事是,必须点升级,千万别干别的。
        如果已经干了别的,可先注销对应的xml中,所有用到添加字段的地方,或者干脆注销整个文件。

        如果是本地开发,可先添加字段,重启odoo后升级,再添加xml文件。

        H 1 条回复 最后回复
        0
        • H 离线
          H 离线
          hui
          在 回复了 eric2017 最后由 编辑
          #4

          @eric2017

          问题:
          1、上述的方法在进行第1,2步的时候,新增的字段实际上没有更新的,3,4步的时候还是报错提示字段不存在的。

          ps:已经更新到服务器上的是不行的了吧。

          2、自定义的模块,重启了odoo服务,但是在更新前,还是能点到升级/卸载模块的地方的(升级的时候才能更新数据库跟视图的),但是官方的底层模板odoo服务重启后就不行的,中间感觉有个时间差别,没懂搞是什么?

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

            这边有一个我以前的回答,供你参考:

            http://odoo.net.cn/post/22631

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

            H 1 条回复 最后回复
            0
            • H 离线
              H 离线
              hui
              在 回复了 digitalsatori 最后由 hui 编辑
              #6

              @digitalsatori
              首先感谢您,不过我的第二个问题感觉还是有疑惑的。

              首先:security文件改变read, write,create,unlink的权限也是需要更新模板,不需要重启odoo服务的?

              在这里记录下对我有用的:
              改变py文件需要重启服务器没错,还需Upgrade。
              总结:应该是涉及数据库结构或内容改变需要更新模块。改xml涉及改变数据库内容,所以需要更新模块。

              比如:而改变实体类的字段属性,既改变了py文件又改变了数据库结构,所以需要重启服务器,同时更新模块。
              卸载了重装相当于重启服务器+更新模块

              1 条回复 最后回复
              0

              • 登录

              • 没有帐号? 注册

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