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

2021-10-25 07:31:00 字數 2896 閱讀 9412

模型層面

一:_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.multi

@api.depends(『用於拼接名稱字段』, 『name』)

def name_get(self):

「」"名稱顯示格式。

「」"new_name = self.用於拼接名稱字段 + self.name

return [(self.id,new_name)]

複製**

八:name_search()

name_get()定義了記錄如何顯示,那麼name_search()則定義了記錄如何被查詢。

name_search()定義了模型記錄在被關聯、被搜尋時,通過輸入的內容進行模糊查詢的邏輯。

預設情況下,是通過查詢記錄的 name 字段值是否與輸入內容類似進行比對查詢,我們可以改寫模型的name_search()函式,把更多的字段加入比對中去。

複製**

@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物件,生成模型記錄。...

Odoo中使用的資料模型

odoo中使用的部分表如下,res users 使用者 res groups 使用者組 角色 res lang 語言 res partner 商 客戶 聯絡人 res font 字型 res company 公司 res bank 銀行 res country 國家 res country stat...

odoo中的inherit模型屬性繼承及模型關係

odoo中的inherit模型屬性繼承及模型關係 一.程式bug adv.py中 class bugadvanced models.model inherit bm.bug 高階模型當中新增乙個所需時間字段 need time fields.integer 所需時間 小時 給bm.bug類的name...