1. 程式人生 > 其它 >odoo開發教程十:Actions

odoo開發教程十:Actions

actions定義了系統對於使用者的操作的響應:登入、按鈕、選擇專案等。

一:視窗action(ir.actions.act_window )

最常用的action型別,用於將model的資料展示出來。

欄位列表:
1.res_model -- 需要在view裡顯示資料的model
2.views -- 一個(view_id, view_type) 列表,view_type代表檢視型別如:form,tree,gragh...,view_id是可選的資料庫id或False,如果沒有指定id,客戶端會自動用fields_view_get()獲取相應型別的預設檢視,type引數列表的第一個會被預設用來展示
3.res_id (可選) -- 當預設的檢視型別是form時,可用於指定載入的資料
4.search_view_id (可選) -- (id, name),id是儲存在資料庫的搜尋檢視,預設會讀取model的預設搜尋檢視
5.target (可選) -- 定義檢視是 在當前檢視上開啟(current)、使用全屏模式(fullscreen)、使用彈出框(new)、可使用main代替current來清除麵包屑導航
6.context (可選) -- 額外的需要傳給檢視的環境資料
7.domain (可選) -- 自動新增到檢視搜尋中的查詢
8.limit (可選) -- 在客戶端顯示的資料量,預設80
9.auto_search(可選) -- 搜尋是否在載入預設檢視後立即執行,預設True
    • view_mode -- 以逗號分隔的檢視型別列表,所有型別的檢視會被展示出來
    • view_ids -- 檢視物件的一系列的欄位,用於定義檢視的預設內容
    • view_id -- 將指定的view加入到檢視中,以防不被view_ids所包含
      上述引數一般在使用資料檔案定義action的時候使用:

二:連結Action(ir.actions.act_url)

可以通過odoo的連結開啟一個網站頁面,可通過兩個欄位來自定義:

  • url -- 當啟用action時所開啟的連結
  • target -- new:在新視窗開啟,self:替換當前頁面內容,預設new

三:伺服器Action (ir.actions.server)

可以通過action定位來觸發複雜的服務端程式碼:

    • id -- 服務端action在資料庫儲存的id
    • context (可選) -- 執行服務端action的上下文環境
      儲存在資料庫中的action可以基於state執行一些特別的動作,部分欄位在state之間是相互共享的

    • model_id -- 與action相關聯的model,在 evaluation contexts中可用

    • condition (可選) -- 使用服務端的 evaluation contexts 來執行python程式碼,如果是False則阻止action執行,預設值是True

code -- 當呼叫action時執行的python程式碼

    • object_create -- 使用鉤子建立一條新記錄(通過create或copy方法)

      • use_create
        1.new - 基於指定的 model_id建立一條記錄
        2.new_other - 基於指定的crud_model_id建立一條記錄
        3.copy_current - 複製action所引用的記錄
        4.copy_other - 複製一個通過ref_object獲得的記錄

      • fields_lines --當建立或複製記錄時需要修改的欄位,One2many 會有以下欄位:
        1.col1 -- 在use_create裡所包含的需要被重賦值的ir.model.fields
        2.value -- 欄位對應的值,基於type進行解析
        3.type -- 取值value:就是value欄位的值,取值equation:value欄位會當成python來解析

      • crud_model_id -- 當use_create為new_other時,表示用於建立新記錄的model id
      • ref_object -- 當use_create為copy_other時用於指定建立記錄時引用的記錄
      • link_new_record -- 是否用用link_field_id將新記錄和當前記錄進行many2one關聯,預設False
      • link_field_id -- 指定當前記錄與新記錄進行many2one關聯的欄位
    • object_write -- 與object_create相似,只是只修改當前記錄而不建立新記錄

      • use_create
        1.current - 修改更新到當前記錄
        2.other - 修改更新到通過crud_model_id 或 ref_object指定的新記錄
        3.expression - 修改更新到通過crud_model_id 以及 write_expression篩選過後的記錄
      • write_expression - 返回一條記錄或物件id的python表示式
      • fields_lines,crud_model_id,ref_object與object_create一致
    • multi
      將通過child_ids many2many關係定義的action一個個執行,如果有action自己返回action,最後一個action被返回給客戶端作為將前multi action的下一個action

    • trigger 傳送一個訊號給工作流

      • wkf_transition_id - 用於觸發的與workflow.transition有Many2one關係的id
      • use_relational_model - 如果是base(預設),則觸發當前記錄的維護訊號;如果是relational,則觸發通過wkf_model_id 和 wkf_field_id篩選出來的當前記錄的欄位
    • client_action -- 返回通過action_id定義的action

四:報表Action (ir.actions.report.xml)

此action為列印報表的觸發器:

  • name(必選) -- 在一個列表裡進行查詢時使用
  • model (必選) -- 報表所反映的資料來源model
  • report_type (必選) -- qweb-pdf | qweb-html
  • report_name -- 報表命名,用於輸出的pdf檔名
  • groups_id -- 可以讀取或使用當前報表的使用者組,Many2many欄位
  • paperformat_id -- 報表所使用的紙張格式,預設使用公司的格式,Many2one欄位
  • attachment_use -- 當取值true的時候只在第一次請求時生成報表,之後直接從儲存的報表列印,可用於生成後不會有改變的報表
  • attachment -- 使用python表示式來定義報表名字,該記錄可用變數object訪問

五:客戶端Actions (ir.actions.client)

觸發一個完全在客戶端實現的action:

      • tag -- action在客戶端的識別符號,一般是一個專用的字串
      • params (可選) -- 用來傳給客戶端的python資料字典格式資料
      • target (可選) -- current:當前內容區開啟action,fullscreen:以全屏模式開啟,new:以彈出框開啟