Pendahuluan
Dalam pengembangan modul Odoo, Model dan Field adalah pondasi utama yang harus kita pahami sebagai developer. Keduanya merupakan inti dari bagaimana data disimpan, diolah, dan ditampilkan dalam sistem ERP Odoo. Memahami konsep ini akan memudahkan kita untuk:
Membuat struktur data baru sesuai kebutuhan bisnis.
Memodifikasi model yang sudah ada di Odoo.
Menghubungkan data menggunakan relasi (many2one, one2many, many2many).
Menambahkan logika bisnis yang sesuai melalui method dan constraint.
A. Model (Object)
Model (disebut juga sebagai Object) adalah representasi dari tabel di database. Model biasanya disimpan di file Python (.py) dalam folder models/. Model dalam Odoo merupakan kelas Python yang digunakan untuk mengelola:
Struktur data (field / kolom)
Relasi antar data (one2many, many2one, dll)
Logika bisnis (method / fungsi)
Hak akses, validasi, hingga constraint data
Model di Odoo terbagi menjadi tiga jenis, yaitu:
1. Model (models.Models)
- Tipe model paling umum digunakan untuk menyimpan data utama seperti: customer, product, invoice, dll.
Data disimpan secara permanen di database.
Berikut adalah contoh dari Model:
2. Transient Model (models.TransientModel)
- Biasanya digunakan untuk proses: import, export, confirm action, wizard (popup), dan lainnya.
Data hanya disimpan sementara dan akan otomatis dihapus.
Berikut adalah contoh dari Transient Model:
3. Abstract Model (models.AbstractModel)
- Bisa diwariskan oleh model lain untuk mewarisi fungsi / field.
Tidak membuat tabel di database.
Cocok untuk membuat mixin (logika reusable).
Berikut adalah contoh dari Abstract Model:
B. Atribut Model
Model di Odoo memiliki atribut yang digunakan untuk mengatur sebuah model bekerja, mengatur model agar dapat berinteraksi dengan database, dan mengatur agar model tersebut dikenali oleh sistem Odoo. Atribut model biasanya diletakkan setelah model tersebut di deklarasikan. Berikut adalah atribut model yang biasa digunakan di Odoo, seperti:

Berikut adalah contoh penerapan atribut di dalam suatu model:
C. Fields
Fields adalah representasi dari kolom didalam tabel database. Fields biasanya disimpan di file Python (.py) dalam folder models/. Odoo menyediakan berbagai tipe field diantaranya seperti:

Berikut adalah contoh dalam penerapan fields di dalam suatu model:
D. Atribut Fields
Sama seperti model, fields juga memiliki atribut yang berfungsi untuk mengontrol perilaku dan tampilan dari sebuah field seperti menentukan apakah field wajib diisi, mengatur label dan deskripsi field, menentukan aksesibilitas (readonly, invisible), dll. Odoo menyediakan berbagai atribut yang dapat ditambahkan saat mendeklarasikan field diantaranya seperti berikut:

Berikut adalah contoh dari penerapan atribut fields.
Berikut adalah contoh dari penerapan compute field: