共同結構--一般視圖都有的
視圖對象公開了多個字段,除非另有說明,否則它們是可選的。
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:
- 如果視圖具有父級視圖,父級視圖将被完全解析,然後應用目前視圖的繼承規範
- 如果視圖沒有父級視圖,則它的 arch别當作父級視圖
- 目前視圖模式為 的子視圖将被查找,且它們的繼承規範被深度優先的應用(一個子視圖被應用,然後是它的子視圖,然後才說它的兄弟視圖)
應用子視圖的結果産生了最終的arch
繼承規範
繼承規範由元素定位器組成,用于比對父視圖中繼承的元素,以及用于修改繼承元素的子元素。
有三種類型的元素定位器來比對一個目标元素:
- 一個帶有
屬性的expr
元素。xpath
是一個應用于目前arch 的XPath表達式,它找到的第一個節點是比對結果expr
- 一個帶有field 屬性的
元素,比對第一個帶有相同name
屬性的 field ,所有其他屬性在比對時都忽略name
- 任何其他元素:具有相同名稱和相同屬性(忽略
和version屬性)的第一個元素是比對的position
比對規範可以有一個可選的
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