
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
OpenERP对象跟数据库数据的联系
-
先感谢下老肖的赐书~
老肖新书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也不是很理解。
每个回复和观看都会被感谢!! -
[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? -
-
多谢高手指教!还有一个问题 在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类型更是存储在另一张表里。