原文地址:http://www.cnblogs.com/ygj0930/p/7150645.htmlhtml
一:紀錄集APIgit
model中的數據是以集合的形式使用的,所以能夠使用集合運算來操做。github
-
集合運算符數據庫
- record in set返回record是否在set中,record須爲單條記錄,record not in set反之
- set1 <= set2 返回set1是否爲set2的子集
- set1 >= set2 返回set2是否爲set1的子集
- set1 | set2 返回set1和set2的並集
- set1 & set2 返回set1和set2的交集
- set1 - set2 返回在集合set1中但不在set2中的記錄
集合運算API:緩存
- ids 獲得當前記錄集合的id列表
- ensure_one() 驗證一個記錄集合是否只包含一條記錄
- exists() 返回當前記錄集中真正存在的子集,並把緩存中未刪除的部分作標記,可用於判斷
if record.exists():
- filtered(func) 返回知足func參數內條件的記錄集合,參數能夠是一個函數或者用.分隔的字段列表
- sorted(key=None, reverse=False) 返回按key排序以後的記錄集,key參數能夠是一個返回單個key的函數或字段名稱或爲空,reverse參數爲True時即爲倒序
- mapped(func) 將func函數應用到全部記錄上,並返回記錄列表或集合
二:運行環境APIapp
運行環境保存了不少ORM相關的變量:數據庫查詢遊標、當前用戶、元數據,還存有緩存,可以使用env
來訪問,如:dom
records.env.user函數
records.env.crpost
records.env.contextspa
更改運行環境:
- sudo() 使用現有數據集建立一個新運行環境,獲得一個基於新運行環境的數據集的拷貝
env['res.partner'].sudo().create({'name': "A Partner"})
- with_context()
一個參數時可用於替換當前運行環境的context,多個參數時經過keyword添加到當前運行環境context或單參數時設置的context - with_env() 完整替換當前運行環境
三:ORM API
search() 接收domain表達式參數,返回符合條件的數據集合,能夠經過limit,offset參數返回一個子集,還可經過order參數對數據排序。
self.search([('is_company', '=', True), ('customer', '=', True)])
search_count():統計知足條件的數據數量
create() 接收多個字段、值的組合,返回新建立的數據集:
self.create({'name': "New Name"})
write() 接收多個字段、值組合,會對指定數據集的全部記錄進行修改,不返回:
self.write({'name': "Newer Name"})
browse() 根據數據的id或者一組id來查找,返回符合條件的數據集合:
self.browse([7, 18, 12])
exists() 獲得某個數據集中保留在數據庫中的那部分(可用於檢查數據集是否爲空):
if not record.exists():
raise Exception("The record has been deleted")
ref() 運行環境函數,根據提供的外部id返回對應的數據記錄:
env.ref('base.group_public')
ensure_one() 檢驗某數據集是否只包含單條數據,若是不是則報錯:
records.ensure_one()
四:搜索函數
-
search(args[, offset=0][, limit=None][, order=None][, count=False])
根據args參數裏的domain表達式來搜索全部記錄,參數列表:
1.args:domain表達式,爲空時返回全部記錄
2.offset (int) 從第幾條記錄開始取
3.limit (int) 返回記錄行數的最大值
4.order (str) 排序的字段
5.count (bool) 當值爲True的時候只返回匹配記錄的條數 -
search_count(args)
返回根據給定domain表達式參數查詢所獲得的記錄條數 -
name_search(name='', args=, operator='', limit=)
返回根據name條件來查詢,並知足args指定的domain表達式的記錄集合 -
name (str) -- 用來匹配的name字符串 args (list) -- domain表達式列表 operator (str) -- 用來匹配的操做符,如: 'like' , '='. limit (int) -- 可選參數,最多返回的記錄行數
五:字段或視圖查詢
字段查詢:
fields_get([fields][, attributes])
以數據字典的形式返回字段的定義,經過繼承得來的字段也會在其中,string/help/selection屬性會自動被翻譯
fields參數是字段列表、爲空或不傳返回全部字段
attributes 可指定字段的屬性、爲空或不傳時返回所有的
視圖查詢:
fields_view_get([view_id | view_type=''])
返回指定視圖的具體組成如:字段,模型,視圖結構
參數列表:
view_id 視圖的id或None
view_type 當view_id參數爲空時指定視圖類型如form,tree等
toolbar 參數爲true時將上下文動做包含在內
default_get(fields) 獲取指定字段的默認值
name_get() 以列表形式返回每條記錄的描述,默認是display_name字段
name_create(name) 至關於調用create方法建立一條新記錄而只設置一個display_name