Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

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

    Odoo 新手求助
    5
    15
    8485
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      LondonBao 最后由 编辑

      先感谢下老肖的赐书~
      老肖新书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
        LondonBao 最后由 编辑

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

        1 条回复 最后回复 回复 引用 0
        • L
          LondonBao 最后由 编辑

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

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

          1 条回复 最后回复 回复 引用 0
          • L
            LondonBao 最后由 编辑

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

            1 条回复 最后回复 回复 引用 0
            • F
              fanzhang1990 最后由 编辑

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

              1 条回复 最后回复 回复 引用 0
              • F
                fanzhang1990 最后由 编辑

                请教:
                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
                • mrshelly
                  mrshelly 最后由 编辑

                  [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
                    fanzhang1990 最后由 编辑

                    多谢高手指教!还有一个问题 在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
                    • mrshelly
                      mrshelly 最后由 编辑

                      [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
                        fanzhang1990 最后由 编辑

                        多谢指导啊

                        1 条回复 最后回复 回复 引用 0
                        • L
                          LondonBao 最后由 编辑

                          多谢mr shelly 的回复!

                          1 条回复 最后回复 回复 引用 0
                          • S
                            sunk 最后由 编辑

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

                            1 条回复 最后回复 回复 引用 0
                            • S
                              sunk 最后由 编辑

                              [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
                              • KevinKong
                                KevinKong 最后由 编辑

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

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

                                1 条回复 最后回复 回复 引用 0
                                • First post
                                  Last post