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

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

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

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

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



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

    [code]在其他编程语言或开发平台(如java or javaEE),一个对象(object)通常和数据库中的一条记录(Record)相对应。[/code]
    这个好理解,一个实体对象对应于一条记录

    [code]但是,OpenERP的对象其实是一个Class,它和一个数据表(Table)对应,而不是和一个记录(Record)对应。[/code]
    这里最不理解,OpenERP的对象是一个类?
    那么,请假单对象是类,它和数据表对应,而不是和记录对应。这是为什么呢?还是我字面上理解错误?

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


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




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

    [code]在其他编程语言或开发平台(如java or javaEE),一个对象(object)通常和数据库中的一条记录(Record)相对应。[/code]
    这个好理解,一个实体对象对应于一条记录

    [code]但是,OpenERP的对象其实是一个Class,它和一个数据表(Table)对应,而不是和一个记录(Record)对应。[/code]
    这里最不理解,OpenERP的对象是一个类?
    那么,请假单对象是类,它和数据表对应,而不是和记录对应。这是为什么呢?还是我字面上理解错误?

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


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




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



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

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



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



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



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



  • [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 字段.



  • 多谢高手指教!还有一个问题 在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 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.



  • 多谢指导啊



  • 多谢mr shelly 的回复!



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



  • [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参数在这里起什么作用的呢?



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

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


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待