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: 一個查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM