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 computemenghubungkan field ke metode_compute_total_price.
- Dekorator @api.dependsmemastikan field dihitung ulang ketikaunit_priceatauquantityberubah.
- Menetapkan store=Truemembuat computed field disimpan dalam database, sehingga dapat dicari dan meningkatkan kinerja.
2. Related Fields
Related fields memungkinkan suatu model mengakses field dari model lain tanpa menduplikasi data. Field ini berguna untuk menampilkan informasi dari model lain.
Mendefinisikan Related Field
from odoo import models, fields
class SaleOrder(models.Model):
    _inherit = 'sale.order'
    partner_email = fields.Char(related='partner_id.email', store=True)
Penjelasan:
- Parameter relatedmenghubungkan field kepartner_id.email.
- Menetapkan store=Truemembuat field disimpan dalam database untuk meningkatkan kinerja query.
3. Kapan Menggunakan Computed vs Related Fields?
- 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.dependsdalam computed fields untuk memastikan perhitungan ulang yang benar.
- Atur store=Trueuntuk 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.
 
					 
									 
									 
									 
									 
									 
									 
									 
									 
									