odoo13学习 odoo的视图
1. odoo的基本視圖結(jié)構(gòu)
基本視圖通常共享下面定義的公共結(jié)構(gòu)。占位符用全大寫表示。
2.字段
視圖對象公開許多字段。它們是可選的,除非另有說明。
name —>char:只有在從某種類型的列表中查找視圖時,才可用作視圖的助記符/描述。
model —>char:模型鏈接到視圖,如果適用的話。
priority —>Integer:當(dāng)視圖被(model, type)請求時,將返回與模型和類型匹配且優(yōu)先級最低的視圖(這是默認(rèn)視圖)。它還定義了視圖繼承期間視圖應(yīng)用程序的順序。
groups_id —>Many2many: odoo.addons.base.models.res_users.Groups
組允許 use/access 當(dāng)前視圖。
如果視圖擴(kuò)展了一個現(xiàn)有視圖,那么只有當(dāng)用戶能夠訪問提供的groups_id時,該擴(kuò)展才會應(yīng)用于給定的用戶。
arch —> Text:視圖布局的描述。
3.屬性
不同的視圖類型有各種各樣的屬性,允許對通用行為進(jìn)行定制。這里將解釋一些主要屬性。它們并不是對所有視圖類型都有影響。
ps:當(dāng)前上下文和用戶訪問權(quán)限也可能影響查看能力。
create:在視圖上 禁用/啟用 記錄創(chuàng)建。
edit (form & list & gantt) : 在視圖上 禁用/啟用 記錄版本。
delete (form & list) : 通過Action下拉菜單 禁用/啟用 視圖上的記錄刪除。
duplicate (form & list) : 通過操作下拉菜單禁用/啟用視圖上的記錄復(fù)制
decoration-$ (list & gantt) : 根據(jù)相應(yīng)記錄的屬性,以行文本的樣式定義記錄的條件顯示。值是Python表達(dá)式。對于每個記錄,表達(dá)式將使用記錄的屬性作為上下文值進(jìn)行計(jì)算,如果為真,相應(yīng)的樣式將應(yīng)用于行。其他上下文值是uid(當(dāng)前用戶的id)和current_date(當(dāng)前日期作為YYYY-MM-DD格式的字符串)。
banner_route: 要獲取并預(yù)先添加到視圖中的路由地址。
如果設(shè)置了這個屬性,控制器路由url將被獲取并顯示在視圖之上。來自控制器的json響應(yīng)應(yīng)該包含一個“html”鍵。
如果html包含一個樣式表< link >標(biāo)簽,它將被移除并附加到 < head >
只有擴(kuò)展了AbstractView和AbstractController的視圖才能使用這個屬性,比如表單、看板、列表……
Example:
4.繼承
繼承的字段:
下面兩個視圖字段用于指定繼承的視圖
- inherit_id , Many2one
前視圖的父視圖,默認(rèn)情況下未設(shè)置。使用ref屬性指定父節(jié)點(diǎn)
- mode Selection: extension / primary
繼承模式,如果設(shè)置了inherit_id,則默認(rèn)為擴(kuò)展,否則為primary。
當(dāng)使用inherit_id時,你想覆蓋模式的一個例子是委托繼承。在這種情況下,你的派生模型將與它的父模型分離,與一個視圖匹配的視圖將不會與另一個匹配。假設(shè)您從與父模型關(guān)聯(lián)的視圖中繼承,并希望自定義派生視圖以顯示來自派生模型的數(shù)據(jù)。派生視圖的模式需要設(shè)置為primary,因?yàn)樗桥缮P偷幕A(chǔ)(可能是唯一的)視圖。否則視圖匹配
5.視圖匹配
- 如果視圖是由(model, type)請求的,則匹配具有正確的模型和類型、mode=primary和最低優(yōu)先級的視圖。
- 當(dāng)視圖被id請求時,如果它的模式不是主模式,則匹配與主模式最接近的父模式。
6.視圖區(qū)別/分辨
視圖的區(qū)別主要是生成不同類型的視圖
- 如果視圖有父視圖,則父視圖被完全解析,然后應(yīng)用當(dāng)前視圖的繼承規(guī)范
- 如果視圖沒有父視圖,則按原樣使用其arch
- 使用模式擴(kuò)展查找當(dāng)前視圖的子視圖,并應(yīng)用它們的繼承規(guī)范深度優(yōu)先(應(yīng)用子視圖,然后應(yīng)用其子視圖,然后應(yīng)用兄弟視圖)。
應(yīng)用子視圖的結(jié)果產(chǎn)生最終的arch
7.繼承規(guī)格
繼承規(guī)范由元素定位器和子元素組成,前者與父視圖中的繼承元素相匹配,后者將用于修改繼承元素。
下面是匹配目標(biāo)元素的三種類型的元素定位器:
- 帶有expr屬性的xpath元素。expr是應(yīng)用于當(dāng)前arch的XPath表達(dá)式1,它找到的第一個節(jié)點(diǎn)是匹配的
- 具有name屬性的字段元素匹配具有相同名稱的第一個字段。在匹配過程中忽略所有其他屬性
- 任何其他元素:匹配具有相同名稱和相同屬性(忽略位置和版本屬性)的第一個元素
繼承規(guī)范可以有一個可選的position屬性來指定如何改變匹配的節(jié)點(diǎn):
- inside (default):繼承的內(nèi)容被附加到匹配的節(jié)點(diǎn)
- replace:繼承的內(nèi)容替換匹配的節(jié)點(diǎn)。任何在規(guī)范內(nèi)容中只包含$0的文本節(jié)點(diǎn)都將被匹配節(jié)點(diǎn)的完整副本替換,從而有效地包裝匹配節(jié)點(diǎn)
- after:繼承的內(nèi)容被添加到匹配節(jié)點(diǎn)的父節(jié)點(diǎn),在匹配節(jié)點(diǎn)之后
- before:繼承的內(nèi)容在匹配節(jié)點(diǎn)之前被添加到匹配節(jié)點(diǎn)的父節(jié)點(diǎn)
- attributes:繼承的內(nèi)容應(yīng)該是帶有name屬性和可選主體的屬性元素:
如果屬性元素有一個body,則在匹配的節(jié)點(diǎn)上創(chuàng)建一個以其名稱命名的新屬性,屬性元素的文本作為值
如果屬性元素沒有主體,則以其名稱命名的屬性將從匹配節(jié)點(diǎn)中刪除。如果不存在這樣的屬性,則會引發(fā)錯誤
- move 可以作為繼承規(guī)范的直接子元素,帶有“inside”、“replace”、“after”或“before” position 屬性來移動節(jié)點(diǎn)。
8.View types:視圖的類型
- Activity 活動視圖):用于顯示鏈接到記錄的活動。數(shù)據(jù)顯示在一個圖表中,記錄構(gòu)成行,活動類型構(gòu)成列。每行的第一個單元格顯示一張(可自定義的,參見模板,與看板非常類似)卡片,表示相應(yīng)的記錄。當(dāng)單擊其他單元格時,記錄中相同類型的所有活動的詳細(xì)描述將顯示出來。
- Calendar 日歷視圖):日歷視圖將記錄顯示為每日、每周或每月日歷中的事件。它們的根元素是。日歷視圖上的可用屬性是
- Cohort 視圖
Cohort視圖 用于顯示和理解一些數(shù)據(jù)在一段時間內(nèi)的變化方式。例如,假設(shè)對于給定的業(yè)務(wù),客戶端可以訂閱某些服務(wù)。隊(duì)列視圖可以顯示每個月的訂閱總數(shù),并研究客戶離開服務(wù)的速率(churn)。當(dāng)點(diǎn)擊一個單元格時,隊(duì)列視圖將重定向到一個新的動作,在這個動作中,你將只能看到包含在單元格的時間間隔中的記錄;該操作包含一個列表視圖和一個表單視圖。
- Dashboard 視圖
與pivot和graph視圖一樣,儀表板視圖也用于顯示聚合數(shù)據(jù)。然而,儀表板可以嵌入子視圖,這使得在給定數(shù)據(jù)集上有一個更完整和有趣的外觀成為可能。儀表板視圖可以顯示子視圖、某些字段的聚合(在一個域上),甚至公式(涉及一個或多個聚合的表達(dá)式)。例如,這是一個非常簡單的儀表盤:
- Diagram 視圖:圖表視圖
diagram視圖可用于顯示記錄的有向圖。根元素是,沒有屬性。
圖視圖可能的子視圖有:
- Form 視圖:表單視圖用于顯示來自單個記錄的數(shù)據(jù)。它們的根元素是< form >。它們由常規(guī)HTML和附加的結(jié)構(gòu)和語義組件組成。
結(jié)構(gòu)構(gòu)件):結(jié)構(gòu)組件提供了結(jié)構(gòu)或“可視化”特性,幾乎不需要邏輯。它們被用作表單視圖中的元素或元素集。
notebook:定義一個選項(xiàng)卡節(jié)。每個選項(xiàng)卡都是通過頁面子元素定義的。頁面可以有以下屬性:1:string(必需)標(biāo)簽的標(biāo)題2:accesskey 一個HTML accesskey3:attrs 基于記錄值的標(biāo)準(zhǔn)動態(tài)屬性group:用于定義表單中的列布局。1: newline只在組元素中有用,提前結(jié)束當(dāng)前行并立即切換到新行(無需預(yù)先填充任何剩余列)2: separator 小的水平間距,一個字符串屬性表現(xiàn)為一個章節(jié)標(biāo)題3: sheet 是否可以作為一個直接的子窗體,以形成一個更窄和響應(yīng)性更好的窗體布局4:header 與工作表相結(jié)合,在工作表本身之上提供一個全寬位置,通常用于顯示工作流按鈕和狀態(tài)小部件語義成分) 語義組件與Odoo系統(tǒng)結(jié)合并允許交互。可用的語義組件有
button:調(diào)用進(jìn)入Odoo系統(tǒng),類似于列表視圖按鈕。此外,還可以指定以下屬性: 1:special 對于在對話框中打開的表單視圖:保存以保存記錄并關(guān)閉對話框,取消以關(guān)閉對話框而不保存。 2: confirm 在執(zhí)行按鈕的Odoo調(diào)用之前顯示(并讓用戶接受)的確認(rèn)消息(也適用于看板視圖)。field:呈現(xiàn)(并可能允許編輯)當(dāng)前記錄的單個字段。多次使用表單視圖中的字段是受支持的,并且字段可以接收“不可見”和“只讀”修飾符的不同值。但是,當(dāng)多個字段具有不同的修飾符“required”值時,不保證該行為。字段節(jié)點(diǎn)的可能屬性為 1: name (mandatory) 要呈現(xiàn)的字段的名稱 2: widget 字段有一個基于其類型的默認(rèn)呈現(xiàn)(例如Char, Many2one)。小部件屬性允許使用不同的呈現(xiàn)方法和上下文。 3: options JSON對象,指定字段小部件(包括默認(rèn)小部件)的配置選項(xiàng) 4: class HTML類要設(shè)置在生成的元素上,常用字段類有:oe_inline oe_left, oe_right oe_read_only, oe_edit_only oe_avatar ....結(jié)構(gòu)):
<form><header><field name="state" widget="statusbar"/></header><sheet><div class="oe_button_box"><BUTTONS/></div><group><group><field name="fname"/></group></group><notebook><page string="Page1"><group><CONTENT/></group></page><page string="Page2"><group><CONTENT/></group></page></notebook></sheet> </form>- Gantt 視圖
甘特視圖適當(dāng)?shù)仫@示甘特圖(用于調(diào)度)。
gantt視圖的根元素是,它沒有子元素,但可以接受以下屬性:
- Graph 視圖: 圖表視圖
圖形視圖用于可視化多個記錄或記錄組上的聚合。它的根元素是 < graph > ,它可以接受以下屬性:
- Kanban :看板視圖
看板視圖是一種看板可視化:它將記錄顯示為“卡片”,介于列表視圖和不可編輯表單視圖之間。記錄可以分組成列,以用于工作流可視化或操作(例如,任務(wù)或工作進(jìn)度管理),或未分組(僅用于可視化記錄)
板視圖的根元素是< kanban >,它可以使用以下屬性:
List 視圖
列表視圖的根元素是< tree>。列表視圖的根可以有以下屬性:
- Map視圖
這個視圖能夠在地圖上顯示記錄以及它們之間的路線。記錄由引腳表示。它還允許在一個綁定到記錄大頭針的彈出窗口中可視化來自模型的字段。
視圖的根元素是< map>可以有多個屬性
例如:
<map res_partner="partner_id" default_order="date_begin" routing="true"><marker-popup><field name="name" string="Task: "/></marker-popup> </map>- Pivot 透視圖
透視視圖用于將聚合可視化為透視表。它的根元素是,它可以接受以下屬性
pivot視圖中唯一允許的元素是字段,它可以具有以下屬性:
name (required): string: type:row (default)/col/measure/interval invisible:例如,時間表軸心視圖可以定義為:
<pivot string="Timesheet"><field name="employee_id" type="row"/><field name="date" interval="month" type="col"/><field name="unit_amount" type="measure" widget="float_time"/> </pivot>- QWeb
QWeb視圖是一個視圖arch中的標(biāo)準(zhǔn)QWeb模板。它們沒有特定的根元素。因?yàn)镼Web視圖沒有一個特定的根元素,它們的類型必須顯式指定(不能從arch字段的根元素推斷)。
QWeb views 有兩個用例:
*1.它們可以用作前端模板,在這種情況下,模板應(yīng)該用作快捷方式。
2.它們可以被用作實(shí)際的qweb視圖(在操作中打開),在這種情況下,它們應(yīng)該被定義為帶有顯式類型(不能推斷)和模型的常規(guī)視圖。
對基本的qweb-as-template的qweb-as-view增加的主要內(nèi)容是:
3.qweb-as-view還提供了額外的渲染鉤子:
_qweb_prepare_context(view_id,域)準(zhǔn)備特定于qweb-as-view的呈現(xiàn)上下文 qweb_render_view(view_id, domain)是客戶端調(diào)用的方法,它將調(diào)用上下文準(zhǔn)備方法,并最終調(diào)用env['ir.qweb'].render()- Search 視圖
搜索視圖與以前的視圖類型有所不同,因?yàn)樗鼈儾伙@示內(nèi)容:盡管它們適用于一個特定的模型,但它們被用來過濾其他視圖的內(nèi)容(通常是聚合的視圖,如列表或圖)。除了用例的不同之外,它們的定義方式是相同的。
搜索視圖的根元素是。它沒有屬性。
搜索視圖可能的子元素有:
搜索默認(rèn)值配置:搜索字段和過濾器可以使用search_default_name鍵通過操作的上下文配置。對于字段,值應(yīng)該是要在字段中設(shè)置的值,對于過濾器,它是一個布爾值或數(shù)字。例如,假設(shè)foo是一個字段,bar是一個動作上下文的過濾器
{'search_default_foo': 'acro','search_default_bar': 1 }將自動啟用欄過濾器和搜索foo字段的acro。
一個數(shù)值(在1到99之間)可以用來描述默認(rèn)組的順序。例如,如果foo和bar指向兩個組
總結(jié)
以上是生活随笔為你收集整理的odoo13学习 odoo的视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openstack集群搭建
- 下一篇: 谷氨酰胺合成酶(Glutamine sy