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

Many2many 向前引用问题

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

    看起来好象没有什么问题呀...

    1 条回复 最后回复
    0
    • O 离线
      O 离线
      oldrev
      发表于 最后由 编辑
      #7

      我在安装模块的时候提示无法找到关系“transit_vehicle”

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

        详细错误信息:[code]
        Traceback (most recent call last):
        File "D:devopenerpstableserverbinnetsvc.py", line 235, in dispatch
        result = LocalService(service_name)(method, *params)
        File "D:devopenerpstableserverbinnetsvc.py", line 74, in call
        return getattr(self, method)(*params)
        File "D:devopenerpstableserverbinserviceweb_services.py", line 582, in execute
        return self.execute(db, uid, wiz_id, datas, action, context)
        File "D:devopenerpstableserverbinserviceweb_services.py", line 562, in execute
        return wiz.execute(db, uid, self.wiz_datas[wiz_id], action, context)
        File "D:devopenerpstableserverbinwizard__init
        .py", line 178, in execute
        res = self.execute_cr(cr, uid, data, state, context)
        File "D:devopenerpstableserverbinwizard__init__.py", line 74, in execute_cr
        action_res = action(self, cr, uid, data, context)
        File "D:devopenerpstableserverbinaddonsbasemodulewizardwizard_module_upgrade.py", line 92, in upgrade_module
        db, pool = pooler.restart_pool(cr.dbname, update_module=True)
        File "D:devopenerpstableserverbinpooler.py", line 62, in restart_pool
        return get_db_and_pool(db_name, force_demo, status, update_module=update_module)
        File "D:devopenerpstableserverbinpooler.py", line 40, in get_db_and_pool
        addons.load_modules(db, force_demo, status, update_module)
        File "D:devopenerpstableserverbinaddons__init
        _.py", line 718, in load_modules
        r = load_module_graph(cr, graph, status, report=report)
        File "D:devopenerpstableserverbinaddons__init__.py", line 581, in load_module_graph
        init_module_objects(cr, package.name, modules)
        File "D:devopenerpstableserverbinaddons__init__.py", line 366, in init_module_objects
        result = obj._auto_init(cr, {'module': module_name})
        File "D:devopenerpstableserverbinosvorm.py", line 1532, in _auto_init
        cr.execute('CREATE TABLE "%s" ("%s" INTEGER NOT NULL REFERENCES "%s" ON DELETE CASCADE, "%s" INTEGER NOT NULL REFERENCES "%s" ON DELETE CASCADE) WITH OIDS' % (f._rel, f._id1, self._table, f._id2, ref))
        File "D:devopenerpstableserverbinsql_db.py", line 76, in wrapper
        return f(self, *args, **kwargs)
        File "D:devopenerpstableserverbinsql_db.py", line 120, in execute
        res = self._obj.execute(query, params)
        ProgrammingError: relation "transit_vehicle" does not exist

        [/code]

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

          这个错误应该是因为transit.vehicle对象还没有被初始化就被调用了。把vehicle类放到driver类之前试试?

          另外,_inherits在这里用来表示一对一关系的,可是name,active字段与父类重复,应该也会有问题的。

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

          1 条回复 最后回复
          0
          • O 离线
            O 离线
            oldrev
            发表于 最后由 编辑
            #10

            两个具有 many2many 的对象,谁放到前面建表的时候就会提示找不到另一个对象

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

              哦,想简单了。
              假设driver类在前,vehicle类在后。 在driver类中先不声明对vehicle的many2many引用,而在vehicle类之后再创建对driver的继承类并添加many2many field. 看看这样是不是可以?

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

              1 条回复 最后回复
              0
              • O 离线
                O 离线
                oldrev
                发表于 最后由 编辑
                #12

                这样应该是可以的,可问题是内置的 res.users 和 res.roles 就可以直接用 many2many 互相引用,我的就不行

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

                  res.user和res.roles对应的表是在服务器初始化的时候由base.sql 创建好的,所以没有初始化的先后关系的问题。

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

                  1 条回复 最后回复
                  0
                  • O 离线
                    O 离线
                    oldrev
                    发表于 最后由 编辑
                    #14

                    那只有按你说的了:
                    先把两个不包含 many2many 属性的对象定义放在前面,然后又用单表继承的方法加入 many2many 属性

                    唯一的问题是这样太不直观了,难道 Tiny 的人没有想过这个问题?就不能先把表都建好再加上约束?

                    [[i] 本帖最后由 oldrev 于 2009-6-7 22:33 编辑 [/i]]

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

                      oldrev, 你的代码现在调试通过了吗?我想跟踪一下,我也在官方论坛里问一下有没有更好的办法。

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

                      1 条回复 最后回复
                      0
                      • O 离线
                        O 离线
                        oldrev
                        发表于 最后由 编辑
                        #16

                        调试通过了

                        1 条回复 最后回复
                        0

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

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

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

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


                        • 登录

                        • 没有帐号? 注册

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