1. 程式人生 > >odoo10學習筆記十:Actions

odoo10學習筆記十:Actions

rep span 表視圖 網站頁面 打開 tac 執行 技術 ext

原文地址:http://www.cnblogs.com/ygj0930/p/7150860.html

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:以彈出框打開

odoo10學習筆記十:Actions