跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. OpenERP对象跟数据库数据的联系

OpenERP对象跟数据库数据的联系

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

    先感谢下老肖的赐书~
    老肖新书4.1章中  关于对象的描述  不理解的地方

    在其他编程语言或开发平台(如java or javaEE),一个对象(object)通常和数据库中的一条记录(Record)相对应。
    


    这个好理解,一个实体对象对应于一条记录

    但是,OpenERP的对象其实是一个Class,它和一个数据表(Table)对应,而不是和一个记录(Record)对应。
    


    这里最不理解,OpenERP的对象是一个类?
    那么,请假单对象是类,它和数据表对应,而不是和记录对应。这是为什么呢?还是我字面上理解错误?

    在OpenERP中,数据库记录(Record)通常叫资源。因为object操作的是数据表,OpenERP的对象的方法(Method)中,几乎每个方法都带有参数ids,该参数是资源(Resource or Record)的ID(在OpenERP中ID是主键)列表,通过该ids就可以操作具体的Record了。
    


    上面的原因,这个ids也不是很理解。


    每个回复和观看都会被感谢!!


    1 条回复 最后回复
    0
    • L 离线
      L 离线
      LondonBao
      写于 最后由 编辑
      #2

      [quote]
      重庆-mrshelly(49812643)  10:55:09
      代码 是对象定义 (Class)
      运行后, 在内存中的对象是 (Class Instance) 实例
      如 员工对象.
      具体的一个员工, 对应 员工数据表中的一条记录.
      Class Instance 则对应相关的 数据表.
      [/quote]

      1 条回复 最后回复
      0
      • L 离线
        L 离线
        LondonBao
        写于 最后由 编辑
        #3

        [quote]
        广州-步科(17779104)  11:18:59
        “但是,OpenERP的对象其实是一个Class,它和一个数据表(Table)对应,而不是和一个记录(Record)对应。  ”

        OE这里和其他语言没什么不同,就是个自己实现的ORM。。。
        去掉“但是”,然后把“对象”改为 model ,这就好理解了
        [/quote]

        1 条回复 最后回复
        0
        • L 离线
          L 离线
          LondonBao
          写于 最后由 编辑
          #4

          总结:OpenERP的model其实是一个类(Class),它和一个数据表(Table)对应,而不是和一个记录(Record)对应。

          1 条回复 最后回复
          0
          • F 离线
            F 离线
            fanzhang1990
            写于 最后由 编辑
            #5

            那么,for this in self.browse(cr,uid,ids,context=context):

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

              请教:
              res=dict.fromkeys(ids,False)
                for this in self.browse(cr,uid,ids,context=context):
                        res[this.id]=0
                this代表对象,this.id代表一个具体的record?

              1 条回复 最后回复
              0
              • mrshellyM 离线
                mrshellyM 离线
                mrshelly
                写于 最后由 编辑
                #7

                [quote author=fanzhang1990 link=topic=5842.msg14819#msg14819 date=1365264523]
                请教:
                res=dict.fromkeys(ids,False)
                  for this in self.browse(cr,uid,ids,context=context):
                          res[this.id]=0
                  this代表对象,this.id代表一个具体的record?
                [/quote]

                this 代表 具体的一条记录.
                this.id 代表该记录的 id 字段.

                1 条回复 最后回复
                0
                • F 离线
                  F 离线
                  fanzhang1990
                  写于 最后由 编辑
                  #8

                  多谢高手指教!还有一个问题 在sale_order_line中
                    for this in self.browse(cr,uid,ids,context=context):
                          context['pricelist']=this.order_id.pricelist_id.id
                            sale_order_line类中有order_id字段,它manytoone 类sale_order,而sale_order类中有字段pricelist_id 
                            他是取得pricelist一条记录的id吗?这个.太多了,不太理解,请指教

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

                    [quote author=fanzhang1990 link=topic=5842.msg14833#msg14833 date=1365313153]
                    多谢高手指教!还有一个问题 在sale_order_line中
                      for this in self.browse(cr,uid,ids,context=context):
                            context['pricelist']=this.order_id.pricelist_id.id
                              sale_order_line类中有order_id字段,它manytoone 类sale_order,而sale_order类中有字段pricelist_id 
                              他是取得pricelist一条记录的id吗?这个.太多了,不太理解,请指教
                    [/quote]

                    this 表示 某销售明细(循环遍历的每一行销售明细), 
                    this.order_id 是 sale.order.line 明细所属哪一个销售单
                    this.order_id.pricelist_id  就代表上面那个销售单所用的 pricelist 价格表
                    this.order_id.pricelist_id.id 就代表上面那个价格表的id.

                    1 条回复 最后回复
                    0
                    • F 离线
                      F 离线
                      fanzhang1990
                      写于 最后由 编辑
                      #10

                      多谢指导啊

                      1 条回复 最后回复
                      0
                      • L 离线
                        L 离线
                        LondonBao
                        写于 最后由 编辑
                        #11

                        多谢mr shelly 的回复!

                        1 条回复 最后回复
                        0
                        • S 离线
                          S 离线
                          sunk
                          写于 最后由 编辑
                          #12

                          知识库是强大的,学习了,感谢前辈。

                          1 条回复 最后回复
                          0
                          • S 离线
                            S 离线
                            sunk
                            写于 最后由 编辑
                            #13

                            [quote author=mrshelly link=topic=5842.msg14835#msg14835 date=1365316696]
                            [quote author=fanzhang1990 link=topic=5842.msg14833#msg14833 date=1365313153]
                            多谢高手指教!还有一个问题 在sale_order_line中
                              for this in self.browse(cr,uid,ids,context=context):
                                    context['pricelist']=this.order_id.pricelist_id.id
                                      sale_order_line类中有order_id字段,它manytoone 类sale_order,而sale_order类中有字段pricelist_id 
                                      他是取得pricelist一条记录的id吗?这个.太多了,不太理解,请指教
                            [/quote]

                            this 表示 某销售明细(循环遍历的每一行销售明细), 
                            this.order_id 是 sale.order.line 明细所属哪一个销售单
                            this.order_id.pricelist_id  就代表上面那个销售单所用的 pricelist 价格表
                            this.order_id.pricelist_id.id 就代表上面那个价格表的id.
                            [/quote]

                            函数里面的context参数在这里起什么作用的呢?

                            1 条回复 最后回复
                            0
                            • KevinKongK 离线
                              KevinKongK 离线
                              KevinKong
                              写于 最后由 编辑
                              #14

                              [quote author=Peter Seng link=topic=5842.msg14571#msg14571 date=1363836235]
                              总结:OpenERP的model其实是一个类(Class),它和一个数据表(Table)对应,而不是和一个记录(Record)对应。
                              [/quote]

                              确切地说,一个model并非对应一个Table,对于Related、Function类型的字段来说,并不在数据库中有对应,Many2many类型更是存储在另一张表里。

                              1 条回复 最后回复
                              0

                              • 登录

                              • 没有帐号? 注册

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