現(xiàn)在我們已經(jīng)創(chuàng)建了新模型及其 相應(yīng)的,是時候了 與用戶界面交互。
在本章結(jié)束時,我們將創(chuàng)建幾個菜單以訪問默認列表 和窗體視圖。
數(shù)據(jù)文件 (XML)
參考:與此主題相關(guān)的文檔可以在數(shù)據(jù)文件中找到。
在第五章:安全性-簡介中,我們通過 CSV 文件添加了數(shù)據(jù)。CSV 當要加載的數(shù)據(jù)具有簡單的格式時,format 很方便。當格式更復雜時 (例如,加載視圖或電子郵件模板的結(jié)構(gòu)),我們使用 XML 格式。例如 此幫助字段包含 HTML 標記。雖然可以通過 CSV 文件加載此類數(shù)據(jù),但它更多 方便使用XML文件。
XML文件必須添加到與CSV文件相同的文件夾中,并在__manifest .py中進行類似的定義。在安裝或更新模塊時,數(shù)據(jù)文件的內(nèi)容也會按順序加載,因此針對CSV文件的所有備注對XML文件都適用。當數(shù)據(jù)鏈接到視圖時,我們將它們添加到views文件夾中。
在本章中,我們將通過XML文件加載我們的第一個動作和菜單。操作和菜單是 數(shù)據(jù)庫中的標準記錄。
注意
當性能很重要時,CSV 格式優(yōu)先于 XML 格式。Odoo就是這種情況 其中加載 CSV 文件比加載 XML 文件快。
在Odoo中,用戶界面(操作,菜單和視圖)主要通過創(chuàng)建來定義 以及編寫 XML 文件中定義的記錄。常見的模式是“菜單”>“操作”>“視圖”。 要訪問記錄,用戶需要通過多個菜單級別導航;最深的層次是 觸發(fā)記錄列表打開的操作。
行動
參考:與此主題相關(guān)的文檔可在操作中找到。
注意
目標:在本節(jié)結(jié)束時,應(yīng)在系統(tǒng)中加載一個操作。我們不會看到 UI中的任何內(nèi)容,但文件應(yīng)加載到日志中:
INFO rd-demo odoo.modules.loading: loading estate/views/estate_property_views.xml
可以通過三種方式觸發(fā)操作:
-
通過單擊菜單項(鏈接到特定操作)
-
通過單擊視圖中的按鈕(如果這些按鈕連接到操作)
-
作為對對象的上下文操作
在本章中,我們將只介紹第一種情況。第二種情況將在后面的章節(jié)中介紹,而最后一種情況是 高級主題。在我們的房地產(chǎn)示例中,我們希望將菜單鏈接到模型,以便我們能夠創(chuàng)建新記錄。該操作可以被視為菜單之間的鏈接 和模型。estate.property
我們的基本行動是:test_model
<record id="test_model_action" model="ir.actions.act_window">
<field name="name">Test action</field>
<field name="res_model">test_model</field>
<field name="view_mode">tree,form</field>
</record>
-
id
是外部標識符。它可用于引用記錄 (不知道其數(shù)據(jù)庫內(nèi)標識符)。 -
model
具有固定值ir.actions.act_window
(Window Actions (ir.actions.act_window))。 -
name
是操作的名稱。 -
res_model
是應(yīng)用該操作的模型。 -
view_mode
是將可用的視圖;在本例中,它們是列表(樹)和表單視圖。 我們稍后會看到,可以有其他視圖模式。
在Odoo中隨處可見的例子,但這是簡單操作的一個很好的例子。請注意 XML 數(shù)據(jù)文件的結(jié)構(gòu),因為您將 在以下練習中需要它。
鍛煉
添加操作。
Create the?estate_property_views.xml?file in the appropriate folder and define it in the?__manifest__.py?file.
Create an action for the model?estate.property.
菜單
參考:可以在快捷方式中找到與此主題相關(guān)的文檔。
注意
目標:在本節(jié)結(jié)束時,應(yīng)創(chuàng)建三個菜單,默認視圖為 顯示:
為了降低聲明菜單(ir.ui.menu)并將其連接到相應(yīng)操作的復雜性,我們可以使用<menuitem>快捷方式。
test_model_action的基本菜單是:
<menuitem id="test_model_menu_action" action="test_model_action"/>
菜單test_model_menu_action鏈接到動作test_model_action,而動作鏈接到模型test_model。如前所述,操作可以看作是菜單和模型之間的鏈接。
但是,菜單始終遵循體系結(jié)構(gòu),在實踐中有三個級別的菜單:
-
根菜單,顯示在應(yīng)用程序切換器中(Odoo社區(qū)應(yīng)用程序切換器是一個 下拉菜單)
-
第一級菜單,顯示在頂部欄中
-
操作菜單
定義結(jié)構(gòu)的最簡單方法是在XML文件中創(chuàng)建它。test_model_action的基本結(jié)構(gòu)是:
<menuitem id="test_menu_root" name="Test">
<menuitem id="test_first_level_menu" name="First Level">
<menuitem id="test_model_menu_action" action="test_model_action"/>
</menuitem>
</menuitem>
第三個菜單的名稱取自 action。
鍛煉
添加菜單。
Create the?estate_menus.xml?file in the appropriate folder and define it in the?__manifest__.py?file. Remember the sequential loading of the data files ;-)
Create the three levels of menus for the?estate.property?action created in the previous exercise. Refer to the?Goal?of this section for the expected result.
重新啟動服務(wù)器并刷新瀏覽器1.您現(xiàn)在應(yīng)該看到菜單, 您甚至可以創(chuàng)建您的第一個房地產(chǎn)廣告!
字段、屬性和視圖
注意
目標:在本節(jié)末尾,銷售價格應(yīng)為只讀,數(shù)字 的臥室數(shù)和可用日期應(yīng)具有默認值。此外,售價 并且不會在重復記錄時復制可用日期值。
保留字段active和state被添加到estate.property模型。
到目前為止,我們只在房地產(chǎn)廣告中使用了通用視圖,但是 在大多數(shù)情況下,我們希望對視圖進行微調(diào)。Odoo 中有許多微調(diào),但是 通常,第一步是確保:
-
某些字段具有默認值
-
某些字段是只讀的
-
復制記錄時,某些字段不會復制
在我們的房地產(chǎn)商業(yè)案例中,我們希望以下幾點:
-
售價應(yīng)為只讀(稍后會自動填寫)
-
復制記錄時,不應(yīng)復制可用日期和銷售價格
-
默認臥室數(shù)應(yīng)為 2
-
默認可用日期應(yīng)為 3 個月后
一些新屬性
在進一步進行視圖設(shè)計之前,讓我們先回到模型定義。我們看到一些屬性,比如required=True,會影響數(shù)據(jù)庫中的表模式。其他屬性將影響視圖或提供默認值。
鍛煉
向字段添加新屬性。
找到適當?shù)膶傩愿臑椋?/span>
-
將銷售價格設(shè)置為只讀
-
防止復制可用日期和銷售價格值
重新啟動服務(wù)器并刷新瀏覽器。您不應(yīng)能夠設(shè)置任何銷售價格。什么時候 復制記錄時,可用日期應(yīng)為空。
默認值
任何字段都可以被賦予默認值。在字段定義中,添加default=X選項,其中X要么是Python文字值(boolean, integer, float, string),要么是接受模型并返回值的函數(shù):
name = fields.Char(default="Unknown")
last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now)
name字段默認值為“Unknown”,而last_seen字段將被設(shè)置為當前時間。
鍛煉
設(shè)置默認值。
添加適當?shù)哪J屬性:
-
the default number of bedrooms is 2
-
the default availability date is in 3 months
檢查默認值是否按預期設(shè)置。
保留字段
參考:與本主題相關(guān)的文檔可在保留字段名稱中找到。
為預定義的行為保留了一些字段名稱。它們應(yīng)該在 在需要相關(guān)行為時進行建模。
鍛煉
Add active field.
Add the?active
?field to the?estate.property
?model.
重新啟動服務(wù)器,創(chuàng)建一個新屬性,然后返回到列表視圖…該屬性將不會被列出!active是具有特定行為的保留字段的一個示例:當一條記錄具有active=False時,它將自動從任何搜索中刪除。要顯示創(chuàng)建的屬性,您需要專門搜索非活動記錄。
鍛煉
為active字段設(shè)置默認值。
為活動字段設(shè)置適當?shù)哪J值,使其不再消失。
注意,默認的active=False值被分配給所有現(xiàn)有的記錄。
鍛煉
添加state?字段。
Add a?state?field to the?estate.property?model. Five values are possible: New, Offer Received, Offer Accepted, Sold and Canceled. It must be required, should not be copied and should have its default value set to ‘New’.
Make sure to use the correct type!
state
稍后將用于多個 UI 增強功能。
現(xiàn)在,由于默認視圖,我們能夠與 UI 進行交互,下一步是 顯而易見:我們想要定義自己的觀點。
1文章來源:http://www.zghlxwxcb.cn/news/detail-856042.html
由于 Web 客戶端保留了各種菜單的緩存,因此需要刷新 和出于性能原因的視圖。文章來源地址http://www.zghlxwxcb.cn/news/detail-856042.html
到了這里,關(guān)于Odoo17入門教程第六章 UI的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!