天天看點

odoo10參考系列--視圖一(清單視圖)共同結構--一般視圖都有的繼承清單視圖

共同結構--一般視圖都有的

視圖對象公開了多個字段,除非另有說明,否則它們是可選的。

name

 (強制性的)

        在對某個清單進行查找時,僅作為對視圖的一種記憶/描述是有用的

model

        與視圖關聯的模型,如果适用的話(此屬性不适用QWeb視圖)

priority

        用戶端程式可以通過 

id

請求視圖,也可以通過 (model, type)來請求視圖。對于後者,将搜尋正确類型和模型的所有視圖,并傳回最低優先數的視圖(它是“預設視圖”)

        priority 同樣定義了在視圖繼承中應用程式的順序

arch

        視圖布局的描述

groups_id

Many2many

字段組允許檢視/使用目前視圖

inherit_id

        目前視圖的父視圖,詳見 繼承 部分,設定預設

mode

        繼承模式,參見 繼承。如果 inherit_id設定為mode,這個mode隻能是primary。如果 inherit_id設定了,預設為

extension

  但可以顯示設定為primary

application

        網站功能定義的可切換視圖,預設情況下,視圖總是被應用的

繼承

視圖比對

  •         如果視圖被(model, type)請求,則正确的模型和類型、mode=primary和最低優先級的視圖是比對的
  •         當一個視圖被 請求時id,如果它的模式不是

    primary

     ,那麼模式為

    primary

      并和它最近的父級視圖是比對的

視圖解析

視圖解析為一個請求/比對的

primary

 視圖生成最中的arch:

  1.         如果視圖具有父級視圖,父級視圖将被完全解析,然後應用目前視圖的繼承規範
  2.         如果視圖沒有父級視圖,則它的 arch别當作父級視圖
  3.         目前視圖模式為 的子視圖将被查找,且它們的繼承規範被深度優先的應用(一個子視圖被應用,然後是它的子視圖,然後才說它的兄弟視圖)

應用子視圖的結果産生了最終的arch

繼承規範

繼承規範由元素定位器組成,用于比對父視圖中繼承的元素,以及用于修改繼承元素的子元素。

有三種類型的元素定位器來比對一個目标元素:

  •         一個帶有

    expr

     屬性的

    xpath

    元素。

    expr

     是一個應用于目前arch 的XPath表達式,它找到的第一個節點是比對結果
  •         一個帶有field 屬性的

    name

     元素,比對第一個帶有相同

    name

      屬性的 field ,所有其他屬性在比對時都忽略
  •         任何其他元素:具有相同名稱和相同屬性(忽略

    position

     和version屬性)的第一個元素是比對的

比對規範可以有一個可選的

position

屬性來指定如何比對可改變的節點:

inside

 (預設)繼承規範的内容被附加到比對的節點

replace

繼承規範的内容替換比對的節點,在規範的内容中隻包含$0的任何文本節點都将被比對節點的完整副本替換,進而有效地包裝比對節點

after

繼承規範的内容在比對節點之後添加到比對節點的父節點

before

繼承規範的内容在比對節點之前添加到比對節點的父節點

attributes

繼承規範的内容應該是具有 name屬性和可選主題的 

attribute

 元素:

  • 如果

    attribute

     元素有一個主體,則在比對的節點上建立一個名為它的

    name

     的新屬性,

    attribute

     元素的文本作為值
  • 如果attribute元素沒有主體,則從比對節點中删除命名為其

    name

     的屬性。如果不存在這樣的屬性,則會引發錯誤

一個視圖的規格按順序應用

清單視圖

清單視圖的根元素是<tree>。清單視圖的根可以具有以下屬性:

editable

預設情況下,選擇清單視圖的行将打開相應的窗體視圖。

editable

 屬性使清單視圖本身可以就地編輯。

有效值是top和bottom,使新記錄分别出現在清單的頂部或底部。

内聯表單視圖的體系結構是從清單視圖派生的。在表單視圖的字段和按鈕上有效的大多數屬性都是由清單視圖接受的,但如果清單視圖不可編輯,則它們可能沒有任何意義

default_order

重寫視圖的順序,替換模型的預設順序。T值是一個逗号分隔的清單字段,以 

desc

為字尾進行逆序排序:

<tree default_order="sequence,name desc">
           

colors

從版本9.0後已過時:被屬性decoration-{$name}替換 

fonts

從版本9.0後已過時:被屬性decoration-{$name}替換

decoration-{$name}

允許根據相應記錄的屬性更改行文本的樣式。

值是Python表達式。對于每個記錄,表達式都以記錄的屬性作為上下文值進行求值,如果為true,則将相應的樣式應用于行。 其他上下文值是uid(目前使用者的ID)和current_date(以 yyyy-MM-dd字元串形式的目前時間)。

{$name}

 可以是 

bf

 (

font-weight: bold

), 

it

 (

font-style: italic

), 或者任何bootstrap中的顔色樣式名稱 (

danger

,

info

muted

primary

success

 or 

warning

).

create

edit

delete

通過設定相應的屬性為false來禁用視圖中相應的操作 

on_write

隻有在有editable屬性的清單中才有意義。應該是清單模型上方法的名稱。在建立或編輯該記錄(在資料庫中)之後,将使用記錄的id調用該方法。

方法應該傳回要加載或更新的其他記錄的ID清單

string

為視圖選擇翻譯的标簽

從版本8.0後已過時: 不顯示任何内容

清單視圖中可能的子元素是:

button

顯示清單單元格中的按鈕

icon

用于顯示按鈕的圖示

string

  • 如果沒有 

    icon

    , 顯示按鈕的文本内容
  • 如果有 

    icon

    alt

     文本内容為圖示

type

按鈕類型,訓示在點選它後如何影響Odoo:

workflow

 (預設)

向工作流發送信号。按鈕的

name

 是工作流信号,該行的記錄作為參數傳遞給信号

object

在清單的模型上調用方法。按鈕的

name

 是方法,它用目前行的記錄ID和目前上下文調用

action

加載一個執行ir.actions,按鈕的name是動作的資料庫ID。目前上下文通過清單中的模型(如active_model),目前行的記錄(active_id)和所有的記錄中目前加載的清單(active_ids,可能隻是比對目前搜尋的資料庫記錄的子集)進行擴充

name

詳見

type

args

詳見

type

attrs

基于記錄值的動态屬性。

在目前行記錄的上下文中,對屬性到域的映射、域進行評估,如果True,則在單元格上設定相應的屬性。

可能的屬性是 

invisible

 (隐藏按鈕)

states

速記

invisible

attrs

: 一個以逗号隔開的states清單,要求模型有一個

state

字段并被應用到視圖中。

如果記錄不在列出的狀态中,則按鈕将不可見(invisible)

危險

使用

states

 結合attrs可能會導緻意想不到的結果如域通過邏輯與而聯合。

context

當執行按鈕的Odoo調用是合并到視圖的上下文中

confirm

在執行按鈕的Odoo調用之前确認消息顯示(使用者可接收的)

field

定義一個列,其中對應的字段應顯示為每個記錄。可以使用以下屬性:

name

要在目前模型中顯示的字段的名稱。給定名稱隻能在每個視圖中使用一次

string

字段欄的标題(預設情況下,使用模型字段的字元串)

invisible

擷取并存儲字段,但不顯示表中的列。對于不應該顯示但被使用的字段是必要的,如 

@colors

groups

列出應該能夠看到字段的組

widget

對于字段的交替展示,可能的清單視圖值是:

progressbar

将 

float

 類型字段展示為進度條

many2onebutton

如果加載值則此字段值用勾選的複選框替換,如果沒有加載值,則替換為打叉的複選框

handle

對于

sequence

 字段, 隻顯示拖放圖示,而不顯示字段的值

sum

avg

在列的底部顯示相應的合計。合計僅計算目前顯示的記錄上。合計操作必須比對相應字段的 

group_operator

attrs

基于記錄值的動态屬性。僅對目前字段起作用,是以,例如

invisible

 将隐藏字段,但保留其他記錄可見的相同字段,它不會隐藏列本身。

筆記

如果清單視圖是editable,那麼表單視圖中的任何字段屬性也都是有效的,在設定内聯表單視圖時将使用該字段屬性

ps:有翻譯不當之處,歡迎留言指正。

原文位址:https://www.odoo.com/documentation/10.0/reference/views.html

繼續閱讀