跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • 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 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
                      • 版块
                      • 标签
                      • 热门
                      • 用户
                      • 群组