跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. [已解决]继承sale.order添加字段,报错KeyError,是不能related吗

[已解决]继承sale.order添加字段,报错KeyError,是不能related吗

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

    在一个trainee模块中继承了sale.order

    class Trainee_order(models.Model):
        _inherit = 'sale.order'
    
        order_source_name = fields.Char(string=u'来源姓名')
    

    所有功能都正常,字段也能正常使用,但是在更新sale.order的时候就会报错

      File "E:\greenodoo10-win-20170722\shaddockerp\odoo10\odoo\models.py", line 2851, in _setup_fields
        field.setup_full(self)
      File "E:\greenodoo10-win-20170722\shaddockerp\odoo10\odoo\fields.py", line 506, in setup_full
        self._setup_related_full(model)
      File "E:\greenodoo10-win-20170722\shaddockerp\odoo10\odoo\fields.py", line 543, in _setup_related_full
        field = target._fields[name]
    KeyError: 'order_source_name'
    

    开始不知道原因,后来发现好像是related的问题

    class Maternity_Matron_Order_Manage(models.Model):
        _name = 'maternity_matron.order'
    
        order_id = fields.Many2one('sale.order', domain=[(
            'state', '=', 'sale')], ondelete='cascade', string=u'订单')
        order_source = fields.Char(related='order_id.order_source_name', string=u'订单来源')
    

    貌似去掉related就不会报错,请教一下这是什么原因,我这么分析的对吗,应该怎么解决这种问题,trainee与maternity_matron不在同一模块中

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

      @56410725
      我只用你这两个model写个模块不会报错的

      1 条回复 最后回复
      0
      • 5 离线
        5 离线
        56410725
        写于 最后由 编辑
        #3
        此回复已被删除!
        H 1 条回复 最后回复
        0
        • H 离线
          H 离线
          hui
          在 回复了 56410725 最后由 编辑
          #4

          @56410725
          妥妥的没问题。你再排查下其他问题。

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

            @hui trainee和maternity_matron是两个模块里面的class,你是不是写的一个模块里

            H 1 条回复 最后回复
            0
            • 静静静 离线
              静静静 离线
              静静
              写于 最后由 编辑
              #6

              order_source_name 字段所在模块没升级吧? 意思就是order_source_name 没创建到数据库

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

                @56410725
                我是写在一个模块里面了。应该没有问题的。

                我又试了两个模块里面,是继承关系,之后更新sale模块,都没问题。

                1 条回复 最后回复
                0
                • 5 离线
                  5 离线
                  56410725
                  在 回复了 静静 最后由 编辑
                  #8

                  @静静 数据库里是有的,而且之前一直用着快半个月了,没出过问题,只是今天需要更新一下sale模块,就出问题了,可能问题一开始就存在,只是因为没有更新过sale模块,所以没发现

                  1 条回复 最后回复
                  0
                  • 静静静 离线
                    静静静 离线
                    静静
                    写于 最后由 编辑
                    #9

                    :unamused_face: 你的模块依赖对么。

                    5 H 3 条回复 最后回复
                    0
                    • 5 离线
                      5 离线
                      56410725
                      在 回复了 静静 最后由 编辑
                      #10

                      @静静 所有用到这个字段的模块,都depends了sale模块,因为都有一个字段是Many2one('sale.order')的

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

                        @56410725
                        你不是应该depends你自己继承了sale.order这个model的模块吗

                        1 条回复 最后回复
                        0
                        • 5 离线
                          5 离线
                          56410725
                          在 回复了 静静 最后由 编辑
                          #12

                          @静静 多谢多谢,是依赖的问题,今天又对依赖有了新的认识,感谢

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

                            @静静
                            就像作者写的那样,他继承了sale.order这个模块,添加了新的字段,那么在数据库中是添加了这个字段的,所以他认为depends原来的sale模块就应该能够使用这个字段的。

                            现在的问题是,必须depends继承了sale.order后的模块才能生效。

                            这个在odoo中如何处理的?难道读取字段都不是从数据库中读取,是直接从模块中吗,还是什么呢?

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

                              @静静
                              我看了他几个报错的源码,最开始的时候是从数据库查询了的啊,只是后来related的时候,是从model里面,导致的应该是数据库跟模型里面的字段匹配不上造成的吧。

                              1 条回复 最后回复
                              0
                              • 静静静 离线
                                静静静 离线
                                静静
                                写于 最后由 编辑
                                #15

                                :unamused_face: 读数据库多慢。当然是直接读python咯。升级谁,就把他定义的字段属性,写进数据库。
                                应该根这种情况有点像http://blog.sina.com.cn/s/blog_bc7dee2d0102xm44.html

                                1 条回复 最后回复
                                0

                                • 登录

                                • 没有帐号? 注册

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