iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Odoo

Odoo16 入門介紹系列 第 7

Day7_odoo_View的使用

  • 分享至 

  • xImage
  •  

○ Action

action通常控制,頁面呈現所需要的元素,通常我們想使用表單或是列表這些view的時候我們也會在這邊先宣告view_mode="tree,form"

<record id='action_all_customers' model='ir.actions.act_window'>
  <field name="name">All customers</field>
  <field name="res_model">res.partner</field>
  <field name="view_mode">tree,form</field>
  <field name="domain">[('customer', '=', True)]</field>
  <field name="context">{'default_customer': True}</field>
  <field name="limit">20</field>
</record>
----------------------------------------------------------
<act_window id="action_all_customers"
  name="All customers"
  res_model="res.partner"
  view_mode="tree,form"
  limit ="20"
  domain="[('customer', '=', True)]"
  context="{'default_customer': True}" /> 

不管是使用<record id='action_all_customers' model='ir.actions.act_window'>>或是<act_window>呈現出來的效果都是一樣的。

○ Menuitem

menuitem負責呈現目錄,讓使用者可以在UI見面更直覺的使用odoo所提供的功能。

root menu
----------------------------------------------------------
<menuitem id="menu_custom_top_level" name="My App menu" web_icon="my_module,static/description/icon.png"/>

菜單 menu
----------------------------------------------------------
<menuitem id="menu_all_customers" parent="menu_custom_top_level" action="action_all_customers" sequence="10"/>

當我們想要透過menu來打開tree、form或是search的時候我們可以這麼做:

Tree
<record id="view_all_customers_tree" model="ir.ui.view">
  <field name="name">All customers</field>
  <field name="model">res.partner</field>
  <field name="arch" type="xml">
    <tree>
      <field name="name" />
    </tree>
  </field>
 </record>
 ---------------------------------------------------------
 Form
 <record id="view_all_customers_form" model="ir.ui.view">
  <field name="name">All customers</field>
  <field name="model">res.partner</field>
  <field name="arch" type="xml">
    <form>
      <group>
        <field name="name" />
      </group>
    </form>
  </field>
 </record>
 ---------------------------------------------------------
 Search
 <record id="search_all_customers" model="ir.ui.view">
    <field name="model">res.partner</field>
    <field name="arch" type="xml">
        <search>
            <field name="name"/>
            <field name="category_id" filter_domain="[('category_id', 'child_of', self)]"/>
            <field name="bank_ids" widget="many2one"/>
            <filter name="suppliers" string="Suppliers" domain="[('supplier_rank', '>', 0)]"/>
            <group expand="0" string="Group By">
                <filter string="Country" name="country" context="{'group_by':'country_id'}"/>
            </group>
        </search>
    </field>
</record>

○ Parameter參數

<action>當中

  1. id - 設定XML ID
  2. name - 這個action的名子
  3. res_model - 填入要使用model的_name
  4. view_mode - 列出要使用的view如:form或是tree
  5. target - 用來呈現動作如果填入new,則會彈出一個視窗
  6. context - 用來設定欄位預設值,或是激活filter
  7. domain - 可以透過所設定的值,來讓顯示我們想讓使用者看到的資料內容
  8. limit - 設定所顯示的record數量。

<menuitem>當中

  1. id - 設定XML ID
  2. name - menu的呈現的名子
  3. parent - 來自哪個root_menu,填入的值會是XML ID
  4. action - 使用哪一個action,填入的值會是XML ID
  5. sequence - 設定數字來指定在root menu下的順序

<record>當中

  1. id - 設定XML ID
  2. model - 繼承來自哪個model

<record>當中的<field name=''>

  1. name -設定顯示名稱
  2. model -來自哪個model,填入該XML ID
  3. arch -通常搭配tree、form這些view,後最還會搭配type='xml'
  4. context - 用來設定欄位預設值,或是激活filter
  5. domain - 可以透過所設定的值,來讓顯示我們想讓使用者看到的資料內容
  6. optional - 設定可以是show或是hide
  7. widget - 小工具,可以是text/teatarea/seleciton/date/datetiome/boolean.

<field name='category_id'>

  • attrs="{'readonly':('status','=','done')}" - 在status為done時readonly=True
  • groups="base.group_on_one" - 只有base.group_on_one群組可以看到此欄位
另外在attrs中也常用oe_read_only oe_edit_only oe_inline
依照順序分別表示 '只能讀'、'只能編輯'、'只能在同一行'

上一篇
Day6_odoo_基本View
下一篇
Day8_odoo_View的使用(2)
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言