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

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

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. [已解决]odoo10 继承并扩展底层模块问题

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

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

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

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

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

    H 1 条回复 最后回复
    0
    • H hui

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

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

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

      H 离线
      H 离线
      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
        • E eric2017

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

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

          H 离线
          H 离线
          hui
          发表于 最后由 编辑
          #4

          @eric2017

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

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

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

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

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

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

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

            H 1 条回复 最后回复
            0
            • D digitalsatori

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

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

              H 离线
              H 离线
              hui
              发表于 最后由 hui 编辑
              #6

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

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

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

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

              1 条回复 最后回复
              0

              你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

              厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

              有了你的建议,这篇帖子会更精彩哦 💗

              注册 登录
              回复
              • 在新帖中回复
              登录后回复
              • 从旧到新
              • 从新到旧
              • 最多赞同


              • 登录

              • 没有帐号? 注册

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