Szeto Consultants

Tanya Odoo: Cara Praktis Konversi Field ID ke Nama di Custom Report/View

Tanya Odoo: Cara Praktis Konversi Field ID ke Nama di Custom Report/View

Diposting pada 03 Jun 2026, 19:56
Ditanyakan oleh: Siska

Halo teman-teman praktisi Odoo di sini,

Saya Siska, dari tim IT di kantor kami yang pakai Odoo ERP. Saya mau tanya nih, kami lagi develop atau modifikasi beberapa custom report dan view di Odoo. Nah, saya sering nemuin kondisi di mana field yang muncul itu cuma ID-nya aja, padahal yang kami butuhkan adalah nama dari record tersebut biar lebih informatif buat user.

Contoh konkretnya gini, di field yang refer ke 'res.partner', 'product.product', atau 'hr.employee', yang muncul hanya angka ID-nya saja (misal: 12345), bukan nama partner, nama produk, atau nama karyawannya. Ini sering terjadi di tree view atau form view yang kami custom, atau bahkan saat mau nampilin di QWeb report.

Kira-kira, ada best practice atau cara yang paling efisien nggak ya untuk melakukan konversi atau menampilkan langsung nama dari ID yang tersimpan di database Odoo? Tujuannya biar user bisa langsung baca nama tanpa harus cross-check ID-nya lagi.

Mohon pencerahannya ya teman-teman, biar tampilannya lebih user-friendly dan informatif. Makasih banyak sebelumnya!
Siska

Balasan (1)

Admin Odoo ForumAdmin & AI Support03 Jun 2026, 19:57
Halo Kak Siska,

Wah, ini pertanyaan yang bagus banget dan sering dialami teman-teman praktisi Odoo lain juga lho! Memang, tampilannya jadi kurang informatif kalau yang muncul cuma ID angka saja, apalagi buat user yang setiap hari pakai Odoo. Pengennya kan langsung baca nama, ya.

Di Odoo, ketika sebuah field mereferensikan ke model lain (misalnya dari Sales Order ke Customer `res.partner`), tipe field ini biasanya adalah Many2one. Secara database, yang tersimpan memang ID angka dari record yang direferensikan. Tapi, Odoo sudah punya mekanisme pintar untuk secara otomatis menampilkan nama atau display_name dari record tersebut di antarmuka pengguna (UI).

Jadi, intinya, kita perlu memastikan bahwa di custom report atau view yang Kak Siska buat, kita mengakses field tersebut dengan cara yang benar agar Odoo bisa menampilkan namanya.

---

Berikut adalah beberapa best practice dan cara efisien untuk mengatasi masalah ini:

---

1. Untuk Custom XML Views (Tree atau Form View):

Biasanya, kalau Kak Siska punya field Many2one, cukup dengan memanggil nama field-nya saja di XML, Odoo sudah akan menampilkan nama dari record tersebut.

Misalnya, jika di model Kak Siska ada field bernama partner_id yang merujuk ke res.partner, cukup tulis begini di view XML-nya:
<field name="partner_id"/>

Odoo akan otomatis mengambil nama dari partner yang punya ID tersebut. Kalau yang muncul masih ID, mungkin ada kondisi khusus di field tersebut atau cara pemanggilannya. Tapi secara standar, begini sudah cukup.

---

2. Untuk QWeb Reports:

Nah, ini yang paling sering jadi kendala di QWeb Reports. Karena di QWeb kita "lebih dekat" ke data mentah, kita perlu secara eksplisit meminta nama dari record terkait.

Misalnya, jika variabel o adalah objek record yang sedang diproses di report, dan o punya field Many2one bernama partner_id (merujuk ke res.partner), untuk menampilkan nama partner-nya, Kak Siska bisa pakai:

<span t-field="o.partner_id.display_name"/>
atau
<span t-esc="o.partner_id.name"/>

Perbedaannya:

  • t-field: Ini adalah cara yang lebih "Odoo-way" karena dia juga akan menghormati format display field yang sudah diatur di Odoo. Ini sangat disarankan.

  • t-esc: Ini langsung mencetak nilai dari atribut name (atau display_name) dari objek terkait. Biasanya untuk nama, name dan display_name akan sama.



Contoh lain:

  • Untuk produk: <span t-field="o.product_id.display_name"/>

  • Untuk karyawan: <span t-field="o.employee_id.display_name"/>


Pastikan field seperti product_id atau employee_id adalah field Many2one ke model yang benar ya.

---

3. Untuk Computed Fields yang Menghasilkan ID (Kasus Spesifik):

Kadang, ada juga kasus di mana Kak Siska membuat computed field yang nilainya adalah ID dari record lain, bukan field Many2one secara langsung. Jika ingin menampilkan namanya, Kak Siska bisa mendefinisikan computed field itu sebagai Many2one juga.

Misalnya, Kak Siska punya field integer some_partner_id_integer yang menyimpan ID partner, dan Kak Siska ingin menampilkan namanya:

Di file .py (model Python):
```python
from odoo import models, fields, api

class YourModel(models.Model):
_name = 'your.custom.model'
_description = 'Your Custom Model'
# ...

some_partner_id_integer = fields.Integer(string="Partner ID Raw")

# Ini adalah field Many2one yang akan menampilkan nama partner
partner_name_display = fields.Many2one(
'res.partner', # Target modelnya
string="Partner Name",
compute='_compute_partner_name_display',
store=True # Optional: agar bisa di-search/filter langsung di DB
)

@api.depends('some_partner_id_integer')
def _compute_partner_name_display(self):
for rec in self:
if rec.some_partner_id_integer:
# Mencari objek res.partner berdasarkan ID
rec.partner_name_display = self.env['res.partner'].browse(rec.some_partner_id_integer)
else:
rec.partner_name_display = False
```

Lalu, di XML View, panggil field partner_name_display ini:
<field name="partner_name_display"/>

Dengan cara ini, Kak Siska tidak perlu lagi 'mengkonversi' secara manual di view, karena Odoo akan melihat partner_name_display sebagai field Many2one dan secara otomatis menampilkan namanya.

---

Intinya, untuk field Many2one, selalu usahakan untuk memanggil objek fieldnya langsung di XML View. Untuk QWeb Report, gunakan atribut .display_name atau .name dari objek Many2one tersebut. Jika melibatkan computed field yang menghasilkan ID, lebih baik buat computed field tersebut sebagai Many2one juga.

Semoga pencerahan ini membantu Kak Siska membuat custom report dan view jadi lebih informatif dan user-friendly ya! Kalau ada kendala atau detail kasus yang lebih spesifik, jangan sungkan untuk bertanya lagi.

Selamat mencoba dan tetap semangat meng-Odoo!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top