Gunakan tanda [] untuk mencari tag gan! contoh [flutter, javascript]

Odoo - Computed dan Related Fields

Odoo - Computed dan Related Fields

Artikel ini dibukukan pada buku Odoo ERP Development
access_time 31 Jan 2025 remove_red_eye 107 Kali spellcheck 316 Kata, 2594 Karakter
#odoo #python

Computed dan related fields di Odoo memungkinkan pengembang untuk menghitung nilai field secara dinamis berdasarkan field lain. Field ini tidak disimpan dalam database kecuali secara eksplisit ditentukan. Odoo menyediakan mekanisme yang kuat untuk mendefinisikan dan menggunakan computed dan related fields secara efisien.

1. Computed Fields

Computed fields adalah field yang nilainya dihitung menggunakan metode tertentu. Nilai ini tidak langsung disimpan dalam database kecuali store=True diatur.

Mendefinisikan Computed Field

from odoo import models, fields, api

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    total_price = fields.Float(compute='_compute_total_price', store=True)
    unit_price = fields.Float()
    quantity = fields.Integer()

    @api.depends('unit_price', 'quantity')
    def _compute_total_price(self):
        for record in self:
            record.total_price = record.unit_price * record.quantity

Penjelasan:

  • Parameter compute menghubungkan field ke metode _compute_total_price.
  • Dekorator @api.depends memastikan field dihitung ulang ketika unit_price atau quantity berubah.
  • Menetapkan store=True membuat computed field disimpan dalam database, sehingga dapat dicari dan meningkatkan kinerja.

Related fields memungkinkan suatu model mengakses field dari model lain tanpa menduplikasi data. Field ini berguna untuk menampilkan informasi dari model lain.

from odoo import models, fields

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    partner_email = fields.Char(related='partner_id.email', store=True)

Penjelasan:

  • Parameter related menghubungkan field ke partner_id.email.
  • Menetapkan store=True membuat field disimpan dalam database untuk meningkatkan kinerja query.
  • Gunakan computed fields ketika nilai harus dihitung dari beberapa field atau membutuhkan logika khusus.
  • Gunakan related fields ketika hanya merujuk ke field dari model lain tanpa perhitungan tambahan.

4. Best Practices

  • Selalu gunakan @api.depends dalam computed fields untuk memastikan perhitungan ulang yang benar.
  • Atur store=True untuk computed fields yang perlu dicari atau difilter.
  • Gunakan related fields untuk referensi langsung agar tidak menduplikasi data yang tidak perlu.

Kesimpulan

Computed dan related fields di Odoo menyediakan cara yang kuat untuk mengelola data dinamis dan terkait secara efisien. Memahami kapan dan bagaimana menggunakannya membantu dalam mengoptimalkan kinerja aplikasi dan kemudahan pemeliharaan.

Artikel ini dibukukan pada buku Odoo ERP Development
Navigasi Konten