跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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. [已解决]属性relation,column1,column2

[已解决]属性relation,column1,column2

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

    many2many 关系是通过中间表关联的,

    中间表只有两列,分别是A表的id 和 B表的id,

    relation 对应了中间表的表名,

    如果你不赋值,默认是将两列列名拼起来加上rel后缀,

    但在列名过长的情况下可能会触发postgres 表名过长的问题,

    导致中间表不能生成,

    (postgres 表名不能超过64),

    column1,column2, 你不赋值,默认模型名_id,


    many2many 中间表不存在第三列,

    中间表是个两张表的互相映射关系。


    除非你有业务需求需要往many2many中间表增加第三列,

    那你可以去改框架,

    给中间表增加第三列对应的业务逻辑

    H 1 条回复 最后回复
    0
    • S Siyuan

      many2many 关系是通过中间表关联的,

      中间表只有两列,分别是A表的id 和 B表的id,

      relation 对应了中间表的表名,

      如果你不赋值,默认是将两列列名拼起来加上rel后缀,

      但在列名过长的情况下可能会触发postgres 表名过长的问题,

      导致中间表不能生成,

      (postgres 表名不能超过64),

      column1,column2, 你不赋值,默认模型名_id,


      many2many 中间表不存在第三列,

      中间表是个两张表的互相映射关系。


      除非你有业务需求需要往many2many中间表增加第三列,

      那你可以去改框架,

      给中间表增加第三列对应的业务逻辑

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

      @siyuan
      1、中间表数据库应该有记录的吧
      2、模型名是product.template,column1页不应该是product_template_id?

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

        @siyuan
        1、中间表数据库应该有记录的吧
        2、模型名是product.template,column1页不应该是product_template_id?

        S 离线
        S 离线
        Siyuan
        发表于 最后由 编辑
        #4

        @hui

        1. 中间表数据库肯定有,如果没有那就是模型升级没成功

        2. 如果你是product_template 里面有一个字段和别的表是 many2many关系,

        那么这个字段的many2many 中间表的column1 列名默认:product_template_id,

        H 1 条回复 最后回复
        0
        • S Siyuan

          @hui

          1. 中间表数据库肯定有,如果没有那就是模型升级没成功

          2. 如果你是product_template 里面有一个字段和别的表是 many2many关系,

          那么这个字段的many2many 中间表的column1 列名默认:product_template_id,

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

          @siyuan
          1、模块升级是成功的了的
          2、我这个m2m的是product.template跟product.template,按理不是应该column都应该是 product_template_id,上面代码那样写是给的别名吗?

          1 条回复 最后回复
          0
          • H 离线
            H 离线
            hui
            发表于 最后由 编辑
            #6
            此主題已被删除!
            1 条回复 最后回复
            0
            • D 离线
              D 离线
              digitalsatori
              管理员
              发表于 最后由 编辑
              #7

              @hui 你这是一个compute字段,并且store=False,系统是不会生成对应的中间表的。

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

              1 条回复 最后回复
              0
              • H 离线
                H 离线
                hui
                发表于 最后由 编辑
                #8

                @digitalsatori
                1、store=False,不生成中间表的话,那我这里写了一个中间表没问题吗?
                2、如果不生成中间表,那他们的对应关系是怎么存储的?

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

                  这个字段的值,是你定义的函数_get_old_part_list算出来的啊

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

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

                    这个字段的值,是你定义的函数_get_old_part_list算出来的啊

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

                    @digitalsatori
                    我知道那个字段的值是我算出来的。
                    但是如果没有这个中间表,我还是写了 relation是不是错的了啊?

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

                      想想看,即使有这个中间表,你都根本没有用到,有意义吗?

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

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

                        想想看,即使有这个中间表,你都根本没有用到,有意义吗?

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

                        @digitalsatori
                        没意义。

                        这个中间表不存在的,那relation引用一个没有的,column1,column2的值也是没有的,这个也不报错的啊?

                        1 条回复 最后回复
                        0

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

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

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

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


                        • 登录

                        • 没有帐号? 注册

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