Szeto Consultants

Diskusi: Cara Menentukan Prioritas View Odoo (Saat Ada Beberapa Inherit View)

Diskusi: Cara Menentukan Prioritas View Odoo (Saat Ada Beberapa Inherit View)

Diposting pada 19 Jun 2026, 15:06
Ditanyakan oleh: Kurniawan

Halo teman-teman praktisi Odoo di sini!

Saya Kurniawan dari tim IT di perusahaan saya, mau numpang bertanya dan berdiskusi nih seputar pengembangan view di Odoo.

Jadi gini, kami sedang menghadapi situasi di mana ada beberapa modul custom yang sama-sama melakukan inherit terhadap base view yang sama, misalnya form view untuk model `res.partner` atau `product.template`. Nah, seringkali yang terjadi adalah view yang ke-load itu tidak selalu sesuai dengan ekspektasi atau prioritas yang kami inginkan. Terkadang view dari Modul A yang seharusnya tampil, malah view dari Modul B yang muncul. Atau ada view dari Modul C yang memang kami harapkan selalu jadi yang paling 'dominan'.

Saya tahu Odoo punya mekanisme prioritas untuk view, tapi jujur saya belum menemukan cara paling efektif atau best practice-nya untuk secara eksplisit mendefinisikan view mana yang harus punya prioritas paling tinggi atau paling diutamakan. Apakah ada attribute khusus di definisi XML view-nya (misalnya `priority="XXX"` atau semacamnya) yang memang fungsinya untuk hal ini? Atau ada strategi lain yang biasa teman-teman pakai untuk mengatur hierarki dan prioritas antar view yang saling meng-inherit?

Mohon insight dan pengalamannya ya teman-teman semua. Terima kasih banyak sebelumnya atas bantuannya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support19 Jun 2026, 15:07
Halo Kak Kurniawan! Wah, ini pertanyaan yang sering banget muncul dan memang tricky nih di pengembangan Odoo, apalagi kalau sudah banyak modul custom yang 'saling tindih' di view yang sama. Pasti bikin pusing kalau view yang tampil malah bukan yang diharapkan.

Tenang saja Kak, Odoo punya mekanisme khusus kok untuk mengatur prioritas view ini, dan Kakak sudah benar, ada attribute yang bisa dipakai!



Mekanisme utama untuk menentukan prioritas view di Odoo adalah melalui attribute `priority` pada definisi XML view-nya.

Ketika Odoo mencari view yang akan ditampilkan untuk suatu model (misalnya form view untuk `res.partner`), Odoo akan mengumpulkan semua view yang relevan dan kemudian memilih yang memiliki nilai `priority` paling rendah. Ingat, makin kecil angkanya, makin tinggi prioritasnya. Nilai `priority` default untuk setiap view (jika tidak didefinisikan secara eksplisit) adalah 16.

Jadi, kalau Kakak punya beberapa inherit view atau bahkan stand-alone view untuk model yang sama, view dengan `priority="5"` akan dianggap lebih utama dan akan dimuat/dipilih sebagai view default dibandingkan dengan view yang punya `priority="10"` atau `priority="16"`.



Contoh penggunaannya di definisi XML view:

```xml

res.partner.form.custom.A
res.partner











res.partner.form.custom.B
res.partner









```
Dalam contoh di atas, karena `view_partner_form_custom_B` punya `priority="5"`, ia akan dianggap sebagai view yang paling dominan jika kedua view ini sama-sama meng-inherit `base.view_partner_form` dan tidak ada view lain dengan prioritas lebih rendah.



Lalu, bagaimana dengan strategi lain atau best practice-nya?

1. Gunakan `priority` secara eksplisit dan konsisten: Ini adalah cara paling langsung. Tentukan range prioritas di tim Kakak. Misalnya, modul inti punya priority 10, modul ekstensi umum 15, dan modul spesifik banget bisa 5.
2. Perhatikan rantai `inherit_id`: Ketika banyak modul melakukan inherit ke base view yang sama, kadang lebih efektif untuk tidak semua meng-inherit view dasar Odoo. Sebagai contoh, jika Modul A sudah meng-inherit `base.view_partner_form` dan membuat view baru `my_module_a.view_partner_form_extended`, maka Modul B yang ingin memodifikasi view yang sama bisa meng-inherit dari `my_module_a.view_partner_form_extended` tersebut, bukan lagi dari `base.view_partner_form`. Ini membuat rantai inherit menjadi lebih jelas dan terstruktur.
3. Dependencies Antar Modul: Pastikan `depends` di `__manifest__.py` terdefinisi dengan baik. Odoo akan memuat dan memproses modul beserta view-nya berdasarkan urutan dependencies. Jika Modul A bergantung pada Modul B, maka view dari Modul B akan diproses lebih dulu sebelum Modul A. Ini juga bisa memengaruhi ketersediaan view untuk di-inherit.
4. Uji Coba: Setelah menerapkan perubahan prioritas, pastikan untuk selalu meng-update modul (bisa dengan perintah dari terminal atau dari UI Odoo: Apps -> Update App List -> Cari modulnya -> Upgrade). Ini penting agar perubahan definisi view XML terbaca dan diterapkan oleh Odoo.



Intinya, attribute `priority` adalah kunci utama untuk kasus Kakak ini. Dengan mengaturnya secara bijak dan mengombinasikannya dengan strategi inherit yang terstruktur, Kakak bisa memastikan view yang diharapkan selalu tampil paling dominan.

Semoga penjelasan ini membantu dan sukses selalu ya Kak Kurniawan dalam eksplorasi Odoo-nya! Semangat!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top