odoo开发笔记--模型中常用的方法

create方法
在数据表中插入一条记录(或新建一个对象的resource)
格式:
def create(self,cr,uid,vals,context={})
参数:
vals:待新建记录的字段值,是一个字典。
context(optional):OpenERP几乎所有方法都带参数context,context是一个字典,存放一些上下文值
返回值:新建记录的id

search方法

查询符合条件的记录
格式:
def search(self,cr,uid,args,offset=0,limit=2000)
参数:
args:包含检索条件的tuple列表,格式为[('name_of_the_field','operators',value),...]。可用的operators有:=,<,>,<=,>=,in,like,child_of
offset(optional):偏移记录数,表示不返回检索结果的offset条
limit(optional):返回结果的最大记录数
返回值:符合条件的记录的id list

read方法

返回记录的指定字段值列表
格式:def read(self,cr,uid,ids,fields=None,context={})
参数:
ids:待读取的记录的id列表,比如[1,3,5]
fields(optional):待读取的字段值,不指定则读取所有字段
context(optional):context是一个字典,存放一些上下文值
返回值:
返回读取结果的字典列表

browse方法

浏览对象及其关联对象。从数据库中读取指定的记录,并生成对象返回。和read等方法不同,本方法不止返回简单的记录返回对象。返回的对象可以直接使用‘.’存取对象的字段和方法,也可以通过关联字段直接访问“相邻”对象。
格式:
def browse(self, cr, uid, select, offset=0, limit=2000) 
例:
addr_obj = self.pool.get('res.partner.address').browse(cr,uid,contact_id)
nom = addr_obj.name
compte = addr_obj.partner_id.bank
先从对象池中取得对象res.partner.address,调用它的方法browse,取得id=contact_id的对象,然后直接用“name”字段以及关联对象partner的银行(addr_obj.partner_id.bank)
参数:
select:待返回的对象id,可以是一个id或是一个id列表
offset(optional)偏移记录数,表示不返回检索结果的offset条
limit(optional):返回结果的最大记录数
返回值:返回对象或对象列表
注意:
本方法只能在Server上使用,不支持rpc等远程调用

write方法
保存一个或几个记录的一个或几个字段
格式:def write(self,cr,uid,ids,vals,context={})
参数:
ids:待修改的纪录的id列表
vals:待保存的字段新值,是一个字典
context(optional):context是一个字典,存放一些上下文值
返回值:
没有异常情况下返回True,否则抛出异常


unlink方法

删除一个或几个记录
格式:def unlink(self,cr,uid,ids)
参数:
ids:待删除的记录的id列表
返回值:如果没有异常,返回True,否则抛出异常


default_get方法

复位一个或多个字段的缺省值
格式:def default_get(self,cr,uid,fields,form=None,reference=None)
参数:
fields:希望复位缺省值的字段列表
返回值:
字段缺省值,是一个字典

default_set

充值字段的缺省值
格式:def default_set(self,cr,uid,field,value,for_user=False)
参数:
field:待修改缺省值的字段
value:新的缺省值
for_user(optional):修改是否只对当前用户有效,还是对所有用户有效,缺省值是对所有用户有效
返回值:True

错误、警告、提示

检察业务逻辑中的错误,终止代码执行,显示错误或警告信息。
raise osv.except_osv(_("Error!"),_("Error Message."))


日期时间方法

日期格式化字符串:DATE_FORMAT = “%Y-%m-%d”
日期时间格式化字符串:DATETIME_FORMAT = “%Y-%m-%d %H:%M:%S”
OpenERP对象中字段赋值为当前日期:fieds.date.context_today(),fields.data.context_today(cr,uid,context=context) ,fields.date.today()
OpenERP对象中字段赋值为当前时间:fieds.datetime.now(),fields.datatime.context_timestamp(cr,uid,datetime.now(),context=context) 


Python中获取当前日期:datetime.data.today()
Python中获取当前时间:datetime.datetime.now()


XML文件


模块目录下的xml文件用于模块安装/更新时初始化/更新数据库, 例如:
定义初始和示例数据;
定义视图;
定义报表;
定义工作流;

OpenERP对象可以通过使用该对象相应的XML文件插入到相应的PostgreSQL表中, 一个OpenERP XML文件的一般结构如下:

[python] view plain copy
 
  1. <?xml version="1.0"?>  
  2. <openerp>  
  3.     <data>  
  4.         <record model="model.name_1" id="id_name_1">  
  5.             <field name="field1"> "field1 content" </field>  
  6.             <field name="field2"> "field2 content" </field>  
  7.             (...)  
  8.         </record>  
  9.         <record model="model.name_2" id="id_name_2">  
  10.             (...)  
  11.         </record>  
  12.         (...)  
  13.     </data>  
  14. </openerp>  

field标记的属性如下:

name: 必需的, 字段名
eval: 可选的, 一个python表达式, 通过它计算值
ref: 对本文件中出现过的id的引用
model: 搜索时使用的模型
search: 一个查询

posted @ 2018-02-02 16:30  hello-Jesson  阅读(1859)  评论(0编辑  收藏  举报