iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Odoo

Odoo開發系列 第 9

[Day 9]odoo14 - form view介紹

  • 分享至 

  • xImage
  •  

今天輪到odoo中最重要的form view的部分了!
一樣廢話不多說,先上範例:

<record id="view_idx_repair_form" model="ir.ui.view">
    <field name="name">idx.repair.form</field>
    <field name="model">idx.repair</field>
    <field name="arch" type="xml">
        <form string="報修單">
            <header>
                <button string="報價" name="state_quote" type="object" class="btn-primary"/>
                <field name="state" widget="statusbar" statusbar_visible="draft,open,verifiy_done,done"/>
            </header>
            <sheet>
                <div class="oe_title" id="name">
                    <label class="o_form_label" for="name"/>
                    <h1>
                        <field name="name"/>
                    </h1>
                </div>
                <group>
                    <group>
                        <field name="partner_id"/>
                        <field name="repair_date"/>
                    </group>
                    <group>
                        <field name="reason"/>
                        <label for="urgent"/>
                        <div class="o_row" name="urgent">
                            <field name="urgent"/>
                            <span>緊急或需要當日(加班)幫忙處理問題</span>
                        </div>
                    </group>
                </group>
                <notebook>
                    <page string="維修內容">
                        <field name="repair_detail">
                            <tree editable="bottom">
                                <field name="default_code"/>
                                <field name="product_id"/>
                                <field name="qty"/>
                                <field name="price_unit"/>
                                <field name="amount"/>
                            </tree>
                        </field>
                    </page>
                </notebook>
            </sheet>
        </form>
    </field>
</record>

顯示的畫面如下:
https://ithelp.ithome.com.tw/upload/images/20230924/20163263NiSaPgluOH.png

id:form view的id,只要不重複即可。
name:form view的name,僅為了識別用。
model:form view的所屬model。
arch:用來定義view。

因為form view中呈現的資訊最為詳細,因此各種不同型態欄位也有許多功能或參數可以做使用,下面先介紹一些較常見的標籤或參數。

先介紹標籤header中會包含的部分:

  • <header>:用來定義畫面的header,主要放置button、smart button及狀態列。
  • <button>:用來定義畫面上的按鈕,type有兩種可以設置,若type='object'時,name要設置為py檔內的function名稱,若設置為type='action'時,name則是選擇要觸發什麼action,class則可以用來定義樣式。
  • statusbar:設置畫面右上角的狀態列,通常會與statusbar_visible一起做使用,可用來設定哪些狀態要常態顯示。

以下為欄位常設定的各項參數:

  • string:更改畫面上欄位顯示的名稱。
  • readonly:由xml來該欄位只能讀取,不可修改。
  • required:由xml來控制欄位是否為必填。
  • attrs:可用來動態設定各欄位,當符合條件時會設置相對應的屬性。如下面範例,當state等於done時,這個欄位會變成只能讀取,不可修改。
attrs="{'readonly': [('state', '=', 'done')]}"
  • domain:用於關聯類型的欄位,用來過濾資料後再供使用者挑選。
  • context:用於關聯類型的欄位,用來傳遞參數。
  • placeholder:當欄位沒有輸入資料時,可顯示提示的內容。

最後介紹標籤notebook的設置:

  • <notebook>:可在頁面上設定多個頁籤,各頁籤以<page>來做區分,可依各頁籤的種類來放置相對應的欄位資料。

除了以上介紹的部分外,還有許多的參數可以靈活地去使用,這邊只先介紹最基礎且常用的部分,剩餘的功能再讓大家依照需求慢慢的去發掘。
以上為form view的簡單介紹,明天會再繼續講解其他種類的view。


上一篇
[Day 8] odoo14 - tree view介紹
下一篇
[Day 10] odoo14 - kanban view、pivot view及graph view介紹
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言