odoo10學習筆記十一:視圖綜述

 

轉載請註明原文地址:http://www.javashuo.com/article/p-xtqqdrbj-md.html css

 

一:視圖標籤等公共結構html

  • name (必選) 用於經過名字查找標籤
  • model: 與view相關聯的model
  • priority 當搜索查找view時,優先級最低的view會被返回
  • arch 視圖layout的描述
  • groups_id 指定可查看、使用視圖的用戶組id,many2many關係
  • inherit_id 當前視圖的父級視圖
  • mode 繼承模式,當inherit_id沒有設置時,它的值是primary,當設置了inherit_id後,它默認值是extension,可手動設置爲primary
  • application 定義哪些視圖能夠被切換,默認狀況下全部視圖均可以

 

 

二:視圖繼承python

一個定位元素組成,用來匹配父視圖中被繼承的元素   和 子視圖中會被用來修改的繼承元素
一共有三種用來匹配目標元素的定位元素:數據庫

  • 帶有expr屬性的xpath元素 ,expr是一個用在arch中的xpath表達式,找到的第一個節點就是匹配結果
  • 帶有name屬性的field元素,匹配第一個同樣name的field元素,其餘的屬性在匹配時被忽略
  • 其餘的元素:匹配第一個擁有同樣的name及其餘屬性的元素(忽略position,version屬性)

經過可選的position屬性來指定如何修改匹配的節點json

    • inside(默認) - 添加到匹配的節點前
    • replace - 替換匹配的節點
    • after - 添加到匹配的節點的父節點以後
    • before - 添加到匹配的節點的父節點以前
    • attributes - 繼承的內容是一系列擁有name屬性的attribute 元素,且有可選的內容主體
      1.若是attribute有內容主體,就在匹配的節點上添加以name命名的、之內容主體爲值的屬性
      2.若是attribute沒有內容主體,就將匹配節點上名字爲name的屬性刪除,若是沒有對應的屬性,拋出一個錯誤

 

三:列表視圖bootstrap

列表視圖的根元素是<tree>,它能夠有如下幾種屬性:api

editable

默認狀況下選擇單行記錄時會打開對應記錄的表單,該屬性讓數據能夠在列表內進行編輯,有效的值是top和bottom,可以讓新的記錄出如今列表的頂部或底部app

default_order

重定義視圖的排序規則,以逗號分隔多個字段,可以使用desc來進行倒序<tree default_order="sequence,name desc">dom

decoration-name

能夠根據值來改變字段的顯示,$name可爲bf (font-weight: bold), it (font-style: italic)或其餘bootstrap樣式如danger, info, muted, primary, success,warning,取值爲python表達式,對每條記錄執行相應表達式,當結果爲true的時候將對應的樣式應用。ide

create, edit, delete

能夠經過將它們設置爲false來禁用視圖中的對應操做

on_write

只當啓用editable時有用,在調用時會傳給函數新增或修改後的記錄,該函數須要返回一個用於更新列表的記錄id列表。

tree視圖中的元素:

button

複製代碼
複製代碼
屬性列表:
1.icon -- 用來展現按鈕的圖標
2.string -- 當沒有icon的時候,button顯示的文字,有icon的時候、至關於alt屬性值
3.type -- 按鈕類型,表示點擊它以後如何影響系統
1)workflow(默認):將按鈕name做爲信號發送給工做流,記錄的內容做爲參數
2)object : 調用當前數據列表模型的方法,方法名是按鈕的name,調用時帶有記錄id和當前上下文環境
3)action : 加載ir.actions,按鈕name是該action在數據庫的id,上下文環境擴展到列表的model(做爲active_model)、當前記錄(active_id)、全部當前加載記錄的id(active_ids)
4.name,args 與type同樣
5.attrs 基於記錄值的動態屬性,將domain表達式應用在記錄上,當返回值爲True的時候設置相應的屬性,通常用於invisible (隱藏按鈕)、readonly (禁用按鈕但顯示)這兩種屬性
6.states invisible屬性attrs的簡寫,給出一個以逗號分隔的state列表,須要模型有一個對應的state屬性,能夠將不在state列表中的記錄的按鈕隱藏
7.context 當響應odoo的調用時,合併到視圖的上下文環境中
8.confirm 當點擊按鈕時給出的確認消息
複製代碼
複製代碼

field

複製代碼
複製代碼
屬性列表:
1.name 須要顯示的字段名
2.string 該列的名稱
3.invisible 查詢並且保存該字段但不顯示
4.groups 能夠看到該字段的用戶組列表
5.widget 用來展現該字段的可選形式

progressbar 進度條用於展現浮點數
many2onebutton當關聯字段值存在時顯示勾,不存在顯示X
handle對於排序字段,直接顯示向上向下箭頭
sum, avg 在底部顯示基於當前頁面數據的計算
attrs 基於記錄值的動態屬性,只對當前欄有效,便可以第一條記錄中該字段顯示,第二條隱藏

field的值支持用eval語法來運算某個表達式得到:例如:<field name="user_id" eval="ref('base.group_user')" />
 

 

複製代碼
複製代碼

 

四:表單視圖

1.notebook

定義一個tab塊,每個tab經過一個page子元素定義,每一個page能夠有如下屬性:

  • string (required) --tab標籤的名稱
  • accesskey --html accesskey
  • attrs --基於記錄值的動態屬性

2.group

用於定義欄目在表單中佈局,默認狀況下一個group定義兩個列,而且每一個最直接的子元素佔用一個列,field類型的元素默認顯示一個標籤
group佔用的列數是能夠經過col屬性自定義的,默認2個;其餘元素能夠經過colspan屬性來定義佔的列數,子元素是橫向佈局的,能夠經過設置string 屬性來定義group所展現的標題

3.newline

只在group元素裏纔有用,表明開啓新的行

4.separator

一條水平線,能夠經過string屬性來設置該區域的標題

5.sheet

能夠用做form的子元素用來表示更加狹義的表單

6.header

與sheet一塊兒使用,顯示在sheet的上方的一個條,通常用於顯示工做流和狀態欄

7.field

展現當前記錄的某個字段,有如下屬性:

  1. name (必選) -- 用於展現字段名
  2. widget -- 每一個字段根據其數據類型有一個默認的展現方式,widget屬性可指定用一個別的方式來展現
  3. options -- 用於指定widget字段配置的json對象
  1. class -- 用於設置當前元素的html class屬性:
  2. oe_inline - 防止它自動將以後的字段換行
    oe_left, oe_right - 至關於css的float浮動
    oe_read_only, oe_edit_only - 只在相應的模式下展現該字段
    oe_no_button - 不爲many2one字段顯示導航按鈕
    oe_avatar - 當該字段爲圖片時,將它展現爲頭像(90*90的正方形)
  1. groups - 只將該字段展現給指定用戶組
  2. on_change - 在字段值改變時調用對應方法,從8.0開始改用模型中的 odoo.api.onchange()
  3. attrs - 基於記錄值的動態參數
  4. domain - 當以選擇的方式顯示關聯字段時,用過過濾數據
  5. context - 用於關聯字段,顯示數據時提供上下文環境
  6. readonly - 該字段可在讀和編輯模式下展現,可是永遠是不能編輯的
  7. required - 當該值沒有設置就保存時給出一個錯誤提示並阻止保存
  8. nolabel - 不顯示字段的標籤,只有在該字段是group子元素時用意義
  9. placeholder - 字段值爲空時展現的提示
  10. mode - 對於one2many字段,用於展現其關聯的記錄的形式,有tree, form, kanban , graph,默認是tree
  11. help - 當將鼠標放在字段或標籤時顯示的提示
  12. filename - 對於二進制的字段,相關字段給出文件名
  13. password - 表示該字段是一個密碼,不明文展現

 

五:日曆視圖

日曆視圖按天、周、月來顯示數據,根元素是calendar,有如下屬性:

  • date_start (必選) -- 儲存開始時間的字段
  • date_stop -- 儲存結束時間的字段,當提供了該字段時記錄能夠直接在視圖中刪除
  • date_delay -- 與date_stop相似,表示的是該事件的持續時間
  • color -- 用於定義顏色的字段,顏色字段值相同的記錄會在視圖中以相同的顏色顯示
  • event_open_popup -- 以彈框代替表單來打開事件,默認是禁用的
  • quick_add -- 容許快速添加事件,只須要提供name就行,當建立失敗時會轉到一個完整的表單彈出框
  • display -- 將字段名用[]包裹展現
  • all_day -- 布爾型,用來定義對應事件是不是全天有效
  • mode -- 默認的顯示模式:day, week, month

 

六:甘特圖

甘特圖用於展現甘特圖表,根元素是gantt,沒有子元素,但能夠有如下屬性:

  • date_start (必選) -- 儲存開始時間的字段
  • date_stop -- 提供結束時間的字段,能夠用date_delay來實現一樣的做用,二者必須提供一個,若是該字段被設置爲False,那該事件的開始時間和結束時間是同個時間點
  • date_delay -- 提供事件持續時間的字段
  • duration_unit -- 持續時間的單位,minute, hour (默認), day, week, month, year
  • default_group_by -- 任務分組的依據字段
  • type -- gantt(默認) 傳統甘特圖、 consolidate(首個child的值被合併甘特圖任務中)、planning(children會自動顯示到甘特圖任務中)
  • consolidation -- 在記錄單元格中用於顯示合併值的字段名
  • consolidation_max -- 數據字典,表示超過必定的值會標紅顯示 ,如:{"user_id": 100}
  • string -- 展現在合併值旁邊的字符,若是沒設置會自動取對應字段的label
  • fold_last_level -- 若是設置了該屬性,最後一個分組級別會被摺疊
  • round_dnd_dates -- 開始和結束時間取整
  • drag_resize -- 任務調整,默認True

 

七:搜索視圖

field

field使用用戶提供的值來定義domain表達式和上下文環境,當產生搜索domain表達式後,會與field提供的表達式使用and進行合併做用,可有如下幾種屬性:

  • name -- 須要過濾的字段名
  • string -- 字段的label
  • operator -- 默認狀況下field會生成[(name, operator, provided_value)]格式的表達式,其中name是字段名,provided_value是用戶提供的值,operator屬性能夠重寫默認的運算符(默認狀況下是根據字段類型分配,數字型是=,字符型是ilike)
  • filter_domain -- 用於搜索的完整的domain表達式,能夠用self變量來將提供的值注入,當operator和filter_domain同時賦值時,filter_domain有最高優先級
  • context -- 容許添加上下文的值
  • groups -- 使該字段只對某些用戶組可用
  • widget -- 使用指定的搜索部件(惟一的用例是V8的many2one字段選擇插件)
  • domain -- 若是字段提供自動完成時(many2one),過濾出可能的自動完成結果

filter

過濾器搜索視圖裏是被預約義的,只能被啓用或禁用。主要用於將數據添加到搜索的上下文環境或者添加新的片斷到搜索filter,有如下屬性:

  • string (required) -- 過濾器的label
  • domain -- 一個domain表達式,被添加到action的domain表達式中,做爲搜索的domain表達式一部分
  • context -- 一個python格式數據字典,被合併到action的domain表達式中,用於生成搜索的domain表達式
  • name -- 過濾器的邏輯名
  • help -- 過濾器的描述文字
  • groups -- 指定過濾器可用的用戶組

separator

用於將多組過濾器分開,通常用於很簡單的視圖裏

group

也是用於分離多組過濾器,在複雜的視圖中比separator更加易讀

默認搜索

搜索字段和過濾條件能夠經過action的context使用search_default_name 配置,對於字段就是須要搜索的值,對過濾器它是一個布爾值:

{
  'search_default_foo': 'acro',
  'search_default_bar': 1
}
#自動激活bar過濾器,並在foo字段搜索acro
相關文章
相關標籤/搜索