thumbnail

Contoh kasus: ketika field “tipe kendaraan” berubah, selain mengubah “tempat parkir” maka akan mengubah “nominal parkir” juga.

Model utama:

class NamaModel(model.Models):
    _name = 'nama.model'
    _description = 'Deskripsi Model'

    type = fields.Selection([
        ('motor', 'Motor'),
        ('mobil', 'Mobil'),
    ], string='Tipe Kendaraan')

    tempat = fields.Selection([
        ('lapangan_a', 'Lapangan A'),
        ('lapangan_b', 'Lapangan B'),
    ], string='Tempat Parkir')

    # Onchange utama
    @api.onchange('type')
    def _onchange_type(self):
        for rec in self:
            rec.tempat = 'lapangan_a' if rec.type == 'motor' else 'lapangan_b'

Inherit model dan override method:

class NamaModel(model.Models):
    _inherit = 'nama.model'

    # Tambahkan field parkir
    parkir = fields.Float('Nominal Parkir')

    # Override method
    @api.onchange('type')
    def _onchange_type(self):
        # Panggil method super() untuk memanggil method utama
        super()._onchange_type()

        # Masukan yang ingin ditambahkan
        for rec in self:
            rec.parkir = 5000 if rec.type == 'mobil' else 2000