odoo 內建方法

2021-10-10 00:12:24 字數 2356 閱讀 8129

模型層面

一:_table_exist

檢查該模型對於的資料庫表是否存在,是則返回1,否則返回0.

@api.model_cr

def _table_exist(self):

pass

模型記錄層面

二:create(self,vals)

記錄的建立函式,一般情況下,是根據檢視傳過來的dict物件,生成模型記錄。我們可以重寫create方法:

1 獲取vals引數,從中提前資料進行校驗、替換;

2 呼叫super(類,self).create(new_vals) 把新的dict作為引數執行記錄建立。

三:write(self,vals)

記錄的修改函式,很少重寫,引數也是dict。

四:read(self,fields)

記錄的檢視函式,引數是檢視哪些字段,預設是全欄位,很少重寫。

五:unlink(self)

記錄的刪除函式,引數是當前資料記錄集。一般重寫該函式,校驗記錄的狀態等,限制某些記錄不能被刪除。

六:_search(self, args, offset=0, limit=none, order=none, count=false, access_rights_uid=none)

模型記錄的搜尋函式,定義了該模型的記錄被關聯搜尋、搜尋檢視搜尋時的條數、排序字段、總數、檢索許可權等。

七:name_get()

name_get()函式定義了該模型的記錄在被關聯、搜尋時,所顯示出來的名字,預設是使用name欄位的值。

如果我們想自定義該模型的記錄顯示的名稱,例如:使用 編碼+name欄位 顯示的復合名稱,則可以重寫name_get()函式:

@api.model

def name_search(self,name=』』,args=none,operator=『ilike』,limit=100):

args = args or

domain =

if name:

domain = [』|』,(『name』,operator,name),(『其他比對字段』,operator,name)]

pos = self.search(domain + args,limit=limit) //使用擴充套件後的條件進行查詢

return pos.name_get() //把查詢結果的name返回

九:default_get()

default_get(fields) 函式用於初始化記錄的預設值,對於模型的某些字段如果需要設定預設值,可以重寫模型的default_get()函式達到目的。

例如:從表單中攜帶上下文資訊跳轉到嚮導、跳轉到乙個模型的新建表單檢視等,可以在跳轉時往context傳遞資料,然後在嚮導模型、被跳轉建立的模型中重寫default_get方法,從context中提前資訊,進行字段預設值的初始化。

@api.model

def default_get(self, default_fields):

result = super(類名, self).default_get(default_fields)

context_data = self.env.context.get(『key』)

//根據context_data進行相關資料查詢、處理操作

result.update() //更改記錄的字段預設值

return result

十:name_create(name)

相當於只傳遞name字段值,呼叫create方法建立一條新記錄。

十一:fields_get

字段查詢函式,一般不重寫:以資料字典的形式返回欄位的定義,通過繼承得來的字段也會在其中,string/help/selection屬性會自動被翻譯

fields_get([fields],[attributes]):

fields引數是字段列表、為空或不傳返回所有字段

attributes 可指定欄位的屬性、為空或不傳時返回全部的

檢視資訊層面

十二:fields_view_get

檢視查詢函式,一般不重寫:返回指定檢視的具體組成如:字段,所關聯的模型,檢視結構。

fields_view_get():

view_id 檢視的id或none

view_type 當view_id引數為空時指定檢視型別如form,tree等

******* 引數為true時將上下文動作包含在內

十二:get_formview_action

表單檢視獲取函式,可以重寫該函式,使模型載入某個特定的form檢視,甚至可以在載入時傳遞context值,控制檢視的行為。

十三:load_views(views,options)

檢視載入函式,可以重寫該函式,在載入檢視時傳遞context值,控制檢視行為。

Odoo模型的內建方法 可按需重寫)

模型層面 一 table exist 檢查該模型對於的資料庫表是否存在,是則返回1,否則返回0.api.model cr def table exist self pass 模型記錄層面 二 create self,vals 記錄的建立函式,一般情況下,是根據檢視傳過來的dict物件,生成模型記錄。...

odoo10基本方法

基本方法 create方法 在資料表中插入一條記錄 或新建乙個物件的resource 格式 def create self,cr,uid,vals,context 引數 vals 待新建記錄的字段值,是乙個字典。返回值 新建記錄的id search方法 查詢符合條件的記錄 格式 def search...

odoo 動態建立欄位的方法

動態建立字段並非乙個常見的的需求,但某些情況下,我們確實又需要動態地建立字段。odoo 中建立欄位的方法有兩種,一種是通過python檔案class中進行定義,另一種是在介面上手工建立,odoo通過state欄位對這兩種型別的字段進行區分。通過介面建立的字段必須以x 開頭。筆者曾經試圖通過pytho...