Dynamic Reference Field Configurable
Field Reference Dinamis yang Dapat Dikonfigurasi

Assalamu'alaikum Warahmatullahi Wabarakatuh,

        Bismillah... pada kesempatan kali ini sy akan sedikit berbagi pengelaman terkait cara agar isi dari field reference pada odoo yang merupakan field yang bisa menampung m2o ke objek lain dengan banyak objek yang sudah di definisikan.

        Langsung saja, kita harus memiliki master data untuk menyimpan objek-objek apa saja yang akan muncul pada field reference nya, berikut source code untuk membuat objek master data:


class MasterDocumentReference(models.Model):
_name = 'master.document.reference'

name = fields.Char(string='Nama')
model_id = fields.Many2one('ir.model', string='Referensi Dokumen')
information = fields.Char(string='Keterangan')


        inti nya ada pada field model_id sebagai relasi ke semua daftar objek pada odoo

        kemudia kita bisa membuat field bertipe reference pada objek yang ingin kita tempelkan, dengan code:


class LptsReferenceLine(models.Model):
_name = 'lpts.reference.line'

document_id = fields.Reference(selection=lambda self: self._get_document_types(), string='Dokumen Referensi')

@api.model
def _get_document_types(self):
selection = []
for i in self.env['master.document.reference'].search([]):
selection.append((i.model_id.model, i.name))
return selection


        kita membuat field bernama document_id, dan mengisi parameter selection dengan isian fungsi _get_document_type(), isi dari fungsi itu akan menghasilkan list dengan isi daftar model yang sudah dibuat daftar nya pada objek master.document.reference.

        Demikian dari saya, begitulah untuk membuat field reference yang isi jenis dokumen nya bisa diatur.

Additional

Untuk melakukan assignment terhadap field reference, cara nya dengan format 'nama_model,ID'

format untuk assignment, misal kita melakukan assign ke sale order dan mau mengisi ID 139, maka formatnya: 'sale.order,139'



        




Format untuk manipulasi data one2many dan many2many