openerp的非数据库表对象

openerp的模型基本都是对应于一张数据库表。但是也存在对应多张已有表的情况,比如report.可以考虑使用数据库view来实现。

注意内容如下:

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()	



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值