Panduan Belajar Odoo ORM (Object-Relational Mapping) untuk Developer Pemula
Dalam dunia software development, berinteraksi langsung dengan database menggunakan perintah SQL (Structured Query Language) secara manual kerap memakan waktu dan rentan terhadap kesalahan (error). Bagi Anda yang sedang mendalami Odoo Python Development, framework Odoo telah menyediakan sebuah layer abstraksi ampuh yang disebut ORM (Object-Relational Mapping).
Melalui ORM, developer dapat mengelola, memanipulasi, dan memproses data pada database PostgreSQL tanpa perlu menulis kueri SQL mentah secara terus-menerus. Artikel ini akan membimbing Anda memahami konsep dasar dan metode-metode krusial saat belajar Odoo ORM.
Apa Itu Odoo ORM?
ORM (Object-Relational Mapping) adalah teknik pemrograman yang menghubungkan objek dalam kode Python dengan tabel-tabel di dalam database PostgreSQL.
Dalam arsitektur Odoo:
Model Odoo (Python Class) merepresentasikan Tabel Database.
Field / Atribut merepresentasikan Kolom Tabel.
Record / Object merepresentasikan Baris Data (Row).
Dengan memanfaatkan ORM, kode Python yang Anda buat menjadi jauh lebih bersih (clean code), aman dari ancaman SQL Injection, serta lebih mudah dipelihara (maintainable).
5 Metode Utama Odoo ORM yang Wajib Diketahui
Saat Anda membangun modul kustom (custom module), terdapat lima basic methods yang paling sering digunakan untuk melakukan operasi CRUD (Create, Read, Update, Delete):
1. search() – Mencari Data Berdasarkan Kriteria
Metode search() digunakan untuk mencari record data berdasarkan filter kriteria tertentu (domain).
# Mencari semua pelanggan (res.partner) yang berada di Indonesia
partners = self.env['res.partner'].search([('country_id.code', '=', 'ID')])
2. browse() – Mengambil Record Berdasarkan ID
Jika Anda sudah mengetahui nilai ID tertentu dari tabel database, gunakan browse() untuk mendapatkan recordset.
# Mengambil record partner dengan ID 12
partner = self.env['res.partner'].browse(12)
3. create() – Menambahkan Record Baru
Metode create() berfungsi memasukkan baris data baru ke dalam database.
# Membuat record partner baru
new_partner = self.env['res.partner'].create({
'name': 'PT Mitra Digital Indonesia',
'email': 'contact@mitradigital.com',
'is_company': True,
})
4. write() – Memperbarui Data (Update)
Untuk mengubah atau memperbarui informasi pada record yang sudah ada, gunakan write().
# Memperbarui alamat email dari record partner
partner.write({
'email': 'info@mitradigital.com'
})
5. unlink() – Menghapus Data
Metode unlink() digunakan untuk menghapus satu atau beberapa baris data dari database.
# Menghapus record partner
partner.unlink()
Studi Kasus Sederhana: Menghitung Total Penjualan Pelanggan
Berikut adalah contoh penerapan logika bisnis sederhana dalam Odoo Python Development menggunakan kueri ORM:
from odoo import models, fields, api
class ResPartner(models.Model):
_inherit = 'res.partner'
total_invoiced_amount = fields.Float(
string='Total Invoiced',
compute='_compute_total_invoiced'
)
@api.depends('invoice_ids')
def _compute_total_invoiced(self):
for partner in self:
# Menggunakan ORM search untuk memfilter faktur yang sudah dibayar
paid_invoices = self.env['account.move'].search([
('partner_id', '=', partner.id),
('move_type', '=', 'out_invoice'),
('payment_state', '=', 'paid')
])
# Menghitung total nilai faktur
partner.total_invoiced_amount = sum(paid_invoices.mapped('amount_total'))
from odoo import models, fields, api
class ResPartner(models.Model):
_inherit = 'res.partner'
total_invoiced_amount = fields.Float(
string='Total Invoiced',
compute='_compute_total_invoiced'
)
@api.depends('invoice_ids')
def _compute_total_invoiced(self):
for partner in self:
# Menggunakan ORM search untuk memfilter faktur yang sudah dibayar
paid_invoices = self.env['account.move'].search([
('partner_id', '=', partner.id),
('move_type', '=', 'out_invoice'),
('payment_state', '=', 'paid')
])
# Menghitung total nilai faktur
partner.total_invoiced_amount = sum(paid_invoices.mapped('amount_total'))
Langkah Selanjutnya dalam Menguasai Odoo Development
Memahami ORM adalah fondasi dasar dari pengembangan modul Odoo. Namun, untuk menjadi seorang full-stack ERP developer yang siap menangani proyek skala industri, Anda juga perlu menguasai kustomisasi tampilan (XML & OWL), integrasi API, serta optimasi database PostgreSQL.
Rekomendasi Praktis:
Bagi Anda yang ingin mempercepat proses belajar dengan kurikulum terarah dan studi kasus riil perusahaan, Anda dapat mengikuti program Odoo Technical Training dari Jidoka System. Pelatihan ini dirancang komprehensif mulai dari tingkat fundamentals hingga kustomisasi tingkat lanjut.
Belajar Odoo Technical
Menguasai Odoo ORM akan membuat proses pengembangan modul ERP menjadi jauh lebih cepat dan efisien. Memahami bagaimana cara kerja search, create, write, dan unlink adalah modal utama sebelum Anda melangkah ke tahap pembuatan logika bisnis yang kompleks.
Ingin mengasah keahlian technical tim IT perusahaan Anda secara langsung melalui studi kasus nyata?
🎓 Jadwal Kelas Reguler: Cek Program Course & Bootcamp Jidoka
🏢 Kebutuhan In-House Training Perusahaan: Konsultasi Langsung via WhatsApp / Contact Us