跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. odoo 中 |= 是什么意思

odoo 中 |= 是什么意思

已定时 已固定 已锁定 已移动 Odoo 新手求助
7 帖子 3 发布者 5.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 火 离线
    火 离线
    火灬炎灬焱灬燚
    写于 最后由 编辑
    #1

    最近在研究 odoo 源码时遇到了一个问题,在 odoo 中 |= 是什么意思啊

    1 条回复 最后回复
    0
    • digitalsatoriD 离线
      digitalsatoriD 离线
      digitalsatori 管理员
      写于 最后由 编辑
      #2

      这是集合操作符号:
      SetA |= SetB 等同于 SetA = SetA | SetB

      即:集合的或操作

      Odoo中的RecordSet也是集合的概念,所以可以使用集合操作符

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

      1 条回复 最后回复
      0
      • 火 离线
        火 离线
        火灬炎灬焱灬燚
        写于 最后由 编辑
        #3

        move_waiting = self.env['stock.move']

            for move in self:
                if move.move_orig_ids:
                    move_waiting |= move
        

        这是odoo仓库的部分源码,move_waiting 是recordSet。但是 move 是单条记录,不是 recordset,这两个能进行 |= 吗

        1 条回复 最后回复
        0
        • digitalsatoriD 离线
          digitalsatoriD 离线
          digitalsatori 管理员
          写于 最后由 编辑
          #4

          都是recordSet, recordSet的子集也是recordSet

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

          1 条回复 最后回复
          0
          • 火 离线
            火 离线
            火灬炎灬焱灬燚
            写于 最后由 编辑
            #5

            这我可能有点不理解,我原来是做Java的,我站在我这分析下你看对吗。recordSet在Java中可以理解为List,就是move_waiting 是 List,move 是 RecordSet 里的一条记录,那就是 List 里的一条记录。如果是这样的话,List 和另一个 List里的记录不能进行 | 操作吧。你看我这样理解对吗

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

              东莞-neter(627785244) 10:10:22
              odoo新api中强调的是recordset,
              什么时候,什么操作如果遵循他的规范都会得到一个recordset,
              只不过这个recordset可能包含一个,或者几个记录,对于有一个记录的可以直接进行属性操作。
              但本质上还是个recordset。所以很绕,一般初次接触的会很容易给搞蒙。
              Rs = env['xxxx'],是个recordset,只不过为空。
              rs = Rs.browse(xxxx),是个recordset。
              rs[0],是个recordset, rs.browse('xxxxx')此时rs也可以像Rs一样browse,
              如果此时你用java的类可以new实例,但是实例不能new实例,
              这就是odoo和java思想的区别。问题的核心在于_browse函数。读懂了就全懂了。

              恬淡

              1 条回复 最后回复
              0
              • digitalsatoriD 离线
                digitalsatoriD 离线
                digitalsatori 管理员
                写于 最后由 卓忆 编辑
                #7

                recordSet并不是列表,而是一个对象,这个对象具有集合(set)的属性。
                简单理解recordSet是列表是不对的。

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

                1 条回复 最后回复
                0

                • 登录

                • 没有帐号? 注册

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