openerp的非数据库表对象
2013-05-06 21:17
239 查看
openerp的模型基本都是对应于一张数据库表。但是也存在对应多张已有表的情况,比如report.可以考虑使用数据库view来实现。
注意内容如下:
1.模型定义的_auto=False
2.模型里面所有的字段都必须是readonly=True
3.声明init(self, cr)函数,用来生成view
4.view的试图字段必须与_columns中的完全相同
例子如下:
生成一个由account和player联合的视图对象accountplayer
account
player
accountplayer
注意内容如下:
1.模型定义的_auto=False
2.模型里面所有的字段都必须是readonly=True
3.声明init(self, cr)函数,用来生成view
4.view的试图字段必须与_columns中的完全相同
例子如下:
生成一个由account和player联合的视图对象accountplayer
account
from osv import fields, osv class account(osv.osv): _name='kyle.account' _discription='账号测试' _columns={ 'name':fields.char(u'账号名',size=64,select=True), } account()
player
from osv import fields, osv class player(osv.osv): _name='kyle.player' _discription='账号测试' _columns={ 'accountid':fields.many2one('kyle.account',u'账号ID'), 'name':fields.char(u'账号名',size=64,select=True), } player()
accountplayer
from osv import fields, osv class accountplayer(osv.osv): _name='kyle.accountplayer' _discription='账号角色列表' _auto=False _columns={ 'accountname':fields.char(u'账号名',size=64,select=True,readonly=True), 'playername':fields.char(u'角色名',size=64,select=True,readonly=True), } def init(self, cr): "hello world" cr.execute("create or replace view kyle_accountplayer as select a.name as accountname, p.name as playername from kyle_account as a join kyle_player as p on p.accountid = a.id") accountplayer()
相关文章推荐
- openerp学习笔记 数据合法性约束(对象约束+数据库约束)
- openerp学习笔记 视图更新时删除已存在的菜单或其他对象
- openerp经典收藏 对象定义详解(转载)
- 深入理解OpenERP的对象 2
- 深入理解OpenERP的对象 3
- openerp开发ORM对象基本信息
- OpenERP对象字段定义的详解 4
- Openerp对象字段定义详解
- openerp对象字段定义的详解
- ORM中对象与数据库表之间的映射机制
- openerp学习笔记 对象调用(创建、修改),用于后台代码创建和更新对象
- openerp学习笔记 对象间关系【多对一(一对一)、一对多(主细结构)、多对多关系、自关联关系(树状结构)】
- 一天一点T-SQL:获取每数据库表对象信息
- OpenERP对象字段定义的详细解说
- openerp学习笔记 数据合法性约束(对象约束+数据库约束)
- openerp对象字段定义的详解
- openerp学习笔记 对象间关系【多对一(一对一)、一对多(主细结构)、多对多关系、自关联关系(树状结构)】
- 三、OPENERP 中的对象关系类型
- openerp学习笔记 对象继承,对象初始化数据
- OpenERP对象详细定义详细分析