Setelah punya "otak" (Model), kita butuh "wajah" agar pengguna bisa berinteraksi dengan data. Di Odoo, "wajah" atau antarmuka pengguna (UI) ini didefinisikan dalam file XML dan disebut View.
File-file View biasanya kita kumpulkan di dalam direktori views/.
💡 Fakta Keren: View yang Anda tulis di file XML sebenarnya adalah data yang disimpan di dalam basis data Odoo (di model ir.ui.view). File XML hanyalah cetak biru untuk memuatnya.
Untuk menampilkan data dari sebuah model, Anda butuh tiga serangkai ini:
ir.actions.act_window): "Lem" yang menghubungkan Model dan View. Aksi ini bilang, "Hei Odoo, untuk model ini, tolong tampilkan view A, B, dan C ya!"ir.ui.view): "Kanvas" yang melukiskan bagaimana data ditampilkan. Yang paling umum adalah form (formulir detail) dan tree (tampilan daftar).ir.ui.menu): "Pintu masuk" di antarmuka Odoo. Pengguna mengklik menu ini untuk memicu Aksi Jendela.Mari kita buat UI untuk model library.book kita. Buat file views/library_book_views.xml:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- 1. Tampilan Formulir (untuk melihat detail satu buku) -->
<record id="library_book_view_form" model="ir.ui.view">
<field name="name">library.book.form</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<form string="Buku">
<sheet>
<group>
<field name="name"/>
<field name="author"/>
<field name="publication_date"/>
<field name="page_count"/>
<field name="is_available"/>
</group>
<notebook>
<page string="Deskripsi">
<field name="description"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- 2. Tampilan Daftar (untuk melihat daftar banyak buku) -->
<record id="library_book_view_tree" model="ir.ui.view">
<field name="name">library.book.tree</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<tree string="Buku-Buku">
<field name="name"/>
<field name="author"/>
<field name="publication_date"/>
</tree>
</field>
</record>
<!-- 3. Aksi Jendela (penghubung) -->
<record id="library_book_action" model="ir.actions.act_window">
<field name="name">Buku-Buku</field>
<field name="res_model">library.book</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Belum ada buku nih. Yuk, buat buku baru! Tambahkan buku!
</p>
</field>
</record>
<!-- 4. Menu Item (tombol menu) -->
<menuitem
id="library_base_menu"
name="Perpustakaanku"
sequence="10"/>
<menuitem
id="library_book_menu"
name="Buku-Buku"
parent="library_base_menu"
action="library_book_action"
sequence="10"/>
</odoo>
<record id="..." model="...">: Perintah utama untuk membuat data baru di Odoo.<field name="arch" type="xml">: Di sinilah Anda "melukis" arsitektur atau tata letak dari view Anda.<form>)<sheet>, <group>, <field>, dan <notebook> (untuk tab) untuk menata layout.Formulir Odoo bisa lebih dari sekadar field input. Mari kita percanggih contoh formulir kita: