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文件的一般結構如下:
- <?xml version="1.0"?>
- <openerp>
- <data>
- <record model="model.name_1" id="id_name_1">
- <field name="field1"> "field1 content" </field>
- <field name="field2"> "field2 content" </field>
- (...)
- </record>
- <record model="model.name_2" id="id_name_2">
- (...)
- </record>
- (...)
- </data>
- </openerp>
field標記的屬性如下:
name: 必需的, 字段名
eval: 可選的, 一個python表達式, 通過它計算值
ref: 對本文件中出現過的id的引用
model: 搜索時使用的模型
search: 一個查詢