Field dan widget

Fields structure the models of a database. If you think of a model as a table or spreadsheet, fields are the columns and records are the individual rows. Fields also define the type of data that is stored within them. The way in which a field's data is presented and formatted on the UI is controlled by its widget.

With Studio, it is possible to:

Studio fields vs. property fields

Fields created using Studio are saved as columns in your Odoo database. Property fields, on the other hand, act as pseudo-fields; they are shared by all records that are linked to the same parent record (e.g., for tasks, the project, or for a product, the product category), but they are not saved as columns in your database.

Example

Adding a Deadline field to the form view of a task using Studio makes that field visible in every task in your database. Adding a Special instructions property field to a task makes the field visible in all tasks within the same project (i.e., its parent) while other projects’ tasks remain unaffected.

Field types

Fields can be broadly divided into two categories:

  • Simple fields, which contain basic values, such as text, numbers, files, etc.

  • Relational fields, which are used to link and display the data from records on another model.

AI fields

AI fields are essentially standard Odoo fields with added AI capabilities that allow their values to be generated automatically through prompts.

Kolom sederhana

Catatan

Non-default widgets, when available, are presented as bullet points or sub-headings.

Teks (char)

Kolom Teks digunakan untuk teks pendek yang berisi karakter apa pun. Satu baris teks ditampilkan saat mengisi kolom.

  • Lencana: menampilkan nilai di dalam bentuk bulat, mirip dengan tag. Nilai tidak dapat diedit di antarmuka pengguna, tetapi nilai default dapat diatur.

  • Salin ke Papan Klip: pengguna dapat menyalin nilai dengan mengklik tombol.

  • E-mail: nilai menjadi tautan mailto yang dapat diklik.

  • Gambar: menampilkan gambar menggunakan URL. Nilai tidak dapat diedit secara manual, tetapi nilai default dapat diatur.

    Catatan

    This works differently from selecting the Image field directly, as the image is not stored in Odoo when using a Text field with the Image widget. For example, it can be useful if you want to save disk space.

  • Telepon: nilai menjadi tautan tel yang dapat diklik.

    Tip

    Centang Aktifkan SMS untuk menambahkan opsi mengirim SMS langsung dari Odoo di samping kolom.

  • URL: nilai menjadi URL yang dapat diklik.

Example

Contoh kolom Teks dengan widget yang berbeda

Teks Multibaris (text)

Kolom Teks Multibaris digunakan untuk teks yang lebih panjang yang berisi jenis karakter apa pun. Dua baris teks ditampilkan di antarmuka pengguna saat mengisi kolom.

  • Salin ke Papan Klip: pengguna dapat menyalin nilai dengan mengklik tombol.

Example

Contoh kolom Teks Multibaris dengan widget yang berbeda

Bilangan bulat (integer)

Kolom Bilangan Bulat digunakan untuk semua bilangan bulat (positif, negatif, atau nol, tanpa desimal).

  • Diagram Lingkaran Persentase: menampilkan nilai di dalam lingkaran persentase, biasanya untuk nilai yang dihitung. Nilai tidak dapat diedit di antarmuka pengguna, tetapi nilai default dapat diatur.

  • Bilah Progres: menampilkan nilai di samping bilah persentase, biasanya untuk nilai yang dihitung. Kolom tidak dapat diedit secara manual, tetapi nilai default dapat diatur.

  • Pegangan: menampilkan ikon pegangan seret untuk mengurutkan rekaman secara manual di tampilan Daftar.

Example

Contoh kolom Bilangan Bulat dengan widget yang berbeda

Desimal (float)

Bidang Desimal digunakan untuk semua angka desimal (positif, negatif, atau nol, dengan desimal).

Catatan

Angka desimal ditampilkan dengan dua desimal setelah koma pada antarmuka pengguna, tetapi disimpan dalam database dengan presisi lebih tinggi.

  • Moneter: mirip dengan penggunaan bidang Moneter. Disarankan untuk menggunakan yang terakhir karena menawarkan lebih banyak fungsionalitas.

  • Persentase: menampilkan karakter persen % setelah nilai.

  • Lingkaran Persentase: menampilkan nilai di dalam lingkaran persentase, biasanya untuk nilai yang dihitung. Bidang tidak dapat diedit secara manual, tetapi nilai default dapat diatur.

  • Bilah Progres: menampilkan nilai di samping bilah persentase, biasanya untuk nilai yang dihitung. Kolom tidak dapat diedit secara manual, tetapi nilai default dapat diatur.

  • Waktu: nilai harus mengikuti format hh:mm, dengan maksimum 59 menit.

Example

Contoh bidang Desimal dengan widget yang berbeda

Moneter (monetary)

Bidang Moneter digunakan untuk semua nilai moneter.

Catatan

Ketika Anda pertama kali menambahkan bidang Moneter, Anda akan diminta untuk menambahkan bidang Mata Uang jika belum ada pada model. Odoo menawarkan untuk menambahkan bidang Mata Uang untuk Anda. Setelah ditambahkan, tambahkan bidang Moneter lagi.

Example

Contoh bidang Moneter beserta bidang Mata Uangnya

Html (html)

Bidang Html digunakan untuk menambahkan teks yang dapat diedit menggunakan editor HTML Odoo.

  • Teks Multiline: menonaktifkan editor HTML Odoo untuk memungkinkan pengeditan HTML mentah.

Example

Contoh bidang Html dengan widget yang berbeda

Tanggal (date)

Bidang Tanggal digunakan untuk memilih tanggal pada kalender.

  • Relative Date: expresses the field value in relation to the current date using relative terms such as Yesterday, Today, In 3 days, 2 months ago, etc. This field should be set to Read only.

Example

Contoh bidang Tanggal dengan widget yang berbeda

Tanggal & Waktu (datetime)

Field Tanggal & Waktu digunakan untuk memilih tanggal pada kalender dan waktu pada jam. Waktu saat ini dari user secara otomatis digunakan jika tidak ada waktu yang diatur.

Tip

Selain properti umum, beberapa properti spesifik tersedia untuk field Tanggal & Waktu yang memiliki widget Tanggal & Waktu atau Rentang Tanggal.

Rentang Tanggal (daterange)

Widget Rentang Tanggal digunakan untuk menampilkan periode waktu yang ditentukan oleh tanggal mulai dan tanggal akhir dalam satu baris. Rentang tanggal dapat memiliki tanggal mulai dan akhir yang wajib, misalnya untuk acara beberapa hari, atau mengizinkan tanggal mulai atau akhir yang opsional, misalnya untuk intervensi layanan lapangan atau tugas project.

Menambahkan rentang tanggal memerlukan dua field: field Tanggal & Waktu dengan widget Rentang Tanggal dan field lain yang dipilih sebagai tanggal mulai atau tanggal akhir. Field dasar ini dapat berupa field Tanggal atau Tanggal & Waktu yang sudah ada, atau yang dibuat khusus untuk tujuan ini.

Untuk menambahkan rentang tanggal:

  1. Identifikasi field Tanggal atau Tanggal & Waktu yang ada yang dapat digunakan sebagai field tanggal mulai/akhir dasar, atau tambahkan yang baru. Jika rentang tanggal:

    • memiliki tanggal mulai dan akhir yang wajib, field ini dapat berupa tanggal mulai atau tanggal akhir; hasilnya sama.

    • mengizinkan tanggal mulai atau akhir yang opsional, field ini adalah tanggal mulai atau tanggal akhir.

    Tip

    Untuk menghindari menampilkan informasi yang sama dua kali, field tanggal mulai/akhir dasar dapat dibuat tidak terlihat dengan mengaktifkan Invisible atau dihapus dari tampilan dengan mengklik Remove from view.

  2. Tambahkan field Tanggal & Waktu dan atur field Widget ke Rentang Tanggal.

  3. Masukkan Label yang sesuai.

  4. Pilih field tanggal mulai/akhir dasar dari dropdown Start date field atau End date field, sesuai kebutuhan.

  5. Jika rentang tanggal harus memiliki tanggal mulai dan akhir yang wajib, aktifkan Always range.

  6. Perbarui properti umum atau properti untuk field Tanggal & Waktu lainnya sesuai kebutuhan, lalu klik Close di sudut kanan atas layar.

Example

Contoh field Tanggal & Waktu dengan widget yang berbeda

Kotak Centang (boolean)

Bidang Checkbox digunakan ketika suatu nilai hanya boleh benar atau salah, ditunjukkan dengan mencentang atau tidak mencentang kotak centang.

  • Button: menampilkan tombol radio. Widget berfungsi tanpa beralih ke mode edit.

  • Toggle: menampilkan tombol toggle. Widget berfungsi tanpa beralih ke mode edit.

Example

Contoh bidang Checkbox dengan widget yang berbeda

Selection (selection)

Bidang Selection digunakan ketika pengguna harus memilih satu nilai dari sekelompok nilai yang telah ditentukan sebelumnya.

  • Lencana: menampilkan nilai di dalam bentuk bulat, mirip dengan tag. Nilai tidak dapat diedit di antarmuka pengguna, tetapi nilai default dapat diatur.

  • Badges: menampilkan semua nilai yang dapat dipilih secara bersamaan di dalam bentuk persegi panjang, diatur secara horizontal.

  • Priority: menampilkan simbol bintang alih-alih nilai, yang dapat digunakan untuk menunjukkan tingkat kepentingan atau kepuasan, misalnya. Ini memiliki efek yang sama dengan memilih Priority field, meskipun, untuk yang terakhir, empat nilai prioritas sudah ditentukan sebelumnya.

  • Radio: menampilkan semua nilai yang dapat dipilih pada waktu yang sama sebagai tombol radio.

    Tip

    Secara default, tombol radio diatur secara vertikal. Aktifkan Display horizontally untuk mengubah cara mereka ditampilkan.

  • Status Bar: menampilkan semua nilai yang dapat dipilih pada waktu yang sama sebagai bilah kemajuan berbentuk panah.

    Tip

    Secara default, nilai pada bilah status dapat dipilih. Nonaktifkan Clickable untuk mencegah nilai diedit pada UI.

Example

Contoh bidang Selection dengan widget yang berbeda

Priority (selection)

Bidang Priority digunakan untuk menampilkan sistem penilaian tiga bintang, yang dapat digunakan untuk menunjukkan tingkat kepentingan atau kepuasan. Jenis bidang ini adalah Selection field dengan widget Priority yang dipilih secara default dan empat nilai prioritas yang telah ditentukan sebelumnya. Akibatnya, widget Badge, Badges, Radio, dan Selection memiliki efek yang sama seperti yang dijelaskan di bawah Selection.

Tip

Untuk mengubah jumlah bintang yang tersedia dengan menambahkan atau menghapus nilai, klik Edit Values. Perhatikan bahwa nilai pertama sama dengan 0 bintang (yaitu, ketika tidak ada pilihan yang dibuat), jadi memiliki empat nilai menghasilkan sistem penilaian tiga bintang, misalnya.

Example

Contoh bidang Priority

File (binary)

Bidang File digunakan untuk mengunggah jenis file apa pun, atau menandatangani formulir (widget Sign).

  • Image: pengguna dapat mengunggah file gambar, yang kemudian ditampilkan di Form view. Ini memiliki efek yang sama dengan menggunakan Image field.

  • PDF Viewer: pengguna dapat mengunggah file PDF, yang kemudian dapat dilihat dari tampilan Form.

  • Sign: pengguna dapat menandatangani formulir secara elektronik. Ini memiliki efek yang sama dengan memilih field Sign.

Example

Contoh field File dengan widget yang berbeda

Image (binary)

Field Image digunakan untuk mengunggah gambar dan menampilkannya di tampilan Form. Tipe field ini adalah field File dengan widget Image yang dipilih secara default. Oleh karena itu, widget File, PDF Viewer, dan Sign memiliki efek yang sama seperti yang dijelaskan di File.

Tip

Untuk mengubah ukuran tampilan gambar yang diunggah, pilih Small, Medium, atau Large di bawah opsi Size.

Sign (binary)

Field Sign digunakan untuk menandatangani formulir secara elektronik. Tipe field ini adalah field File dengan widget Sign yang dipilih secara default. Oleh karena itu, widget File, Image, dan PDF Viewer memiliki efek yang sama seperti yang dijelaskan di File.

Tip

Untuk memberikan opsi Auto kepada pengguna saat harus membuat tanda tangan mereka, pilih salah satu field Auto-complete with yang tersedia (Text, Many2One, dan Related Field pada model saja). Tanda tangan secara otomatis dihasilkan menggunakan data dari field yang dipilih.

Field relasional

Catatan

Non-default widgets, when available, are presented as bullet points or sub-headings.

Many2One (many2one)

Field Many2One digunakan untuk menghubungkan record lain (dari model lain) ke record yang sedang diedit. Nama record dari model lain kemudian ditampilkan pada record yang sedang diedit.

Example

Pada model Sales Order, field Customer adalah field Many2One yang menunjuk ke model Contact. Ini memungkinkan banyak sales order terhubung ke satu contact (pelanggan).

Diagram yang menunjukkan hubungan many2one

Tip

  • Untuk mencegah pengguna membuat record baru di model yang terhubung, centang Disable creation.

  • Untuk mencegah pengguna membuka record di jendela pop-up, centang Disable opening.

  • Untuk membantu pengguna hanya memilih record yang tepat, klik Domain untuk membuat filter.

  • Untuk memicu pencarian record yang ditautkan hanya setelah jumlah minimum karakter dimasukkan, masukkan nomor yang diinginkan di field Typeahead search. Dalam situasi di mana dataset besar, ini dapat meningkatkan relevansi dan performa pencarian.

  • Badge: menampilkan nilai di dalam bentuk bulat, mirip dengan tag. Nilai tidak dapat diedit di UI.

  • Radio: menampilkan semua nilai yang dapat dipilih pada waktu yang sama sebagai tombol radio.

One2Many (one2many)

Field One2Many digunakan untuk menampilkan relasi yang ada antara record pada model saat ini dan beberapa record dari model lain.

Example

Anda dapat menambahkan field One2Many pada model Contact untuk melihat banyak sales order dari satu pelanggan.

Diagram yang menunjukkan hubungan one2many

Catatan

Untuk menggunakan field One2Many, kedua model harus sudah dihubungkan menggunakan field Many2One. Relasi One2Many tidak ada secara independen: pencarian balik dari relasi Many2One yang ada dilakukan.

Lines (one2many)

Field Lines digunakan untuk membuat tabel dengan baris dan kolom (misalnya baris produk pada sales order).

Tip

Untuk memodifikasi kolom, klik field Lines kemudian Edit List View. Untuk mengedit form yang muncul saat user mengklik Add a line, klik Edit Form View.

Example

Contoh field Lines

Many2Many (many2many)

Field Many2Many digunakan untuk menghubungkan beberapa record dari model lain ke beberapa record pada model saat ini. Field Many2Many dapat menggunakan Disable creation, Disable opening, Domain, seperti field Many2One.

Example

Pada model Task, field Assignees adalah field Many2Many yang menunjuk ke model Contact. Ini memungkinkan satu user ditugaskan ke banyak task dan banyak user ditugaskan ke satu task.

Diagram yang menunjukkan hubungan many2many

Tip

Untuk memicu pencarian record yang ditautkan hanya setelah jumlah minimum karakter dimasukkan, masukkan nomor yang diinginkan di field Typeahead search. Dalam situasi di mana dataset besar, ini dapat meningkatkan relevansi dan performa pencarian.

  • Checkboxes: user dapat memilih beberapa nilai menggunakan checkbox.

  • Tags: user dapat memilih beberapa nilai yang muncul dalam bentuk bulat, juga dikenal sebagai tags. Ini memiliki efek yang sama dengan memilih field Tags.

Tags (many2many)

Field Tags digunakan untuk menampilkan beberapa nilai dari model lain yang muncul dalam bentuk bulat, juga dikenal sebagai tags. Tipe field ini adalah field Many2Many dengan widget Tags dipilih secara default. Oleh karena itu, widget Checkboxes dan Many2Many memiliki efek yang sama seperti dijelaskan pada Many2Many.

Tip

Untuk menampilkan tag dengan warna latar belakang berbeda, centang Use colors.

Example

Contoh field Tags

Add a field to a view

With Studio, it is possible to add:

Tip

Add a new field to a form or list view to save it to the model and make it available as an existing field in other views of the same model.

Add a new field

Tip

Activate developer mode before adding a new field to see, and be able to edit, the field's technical name during configuration.

To add a new field, follow these steps:

  1. Navigate to the relevant form or list view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant form or list view.

  2. In the Add tab, drag the relevant field type from the New Fields section and drop it in the desired position. If the new field is a relational field, select the relevant reciprocal field, model, or related field in the pop-up.

  3. In the Properties tab, configure the field's properties:

    • Enter the Label to be displayed as the field name on the UI; this is also used to generate the default technical name of the field.

    • Click anywhere outside the Label field to see the Technical Name updated with the default technical name.

      Catatan

      • The Technical Name of a new field can be edited in Studio during the configuration process. At any other time, a field's technical name can only be modified via the technical settings of the database.

      • The technical name of a new field added using Studio is by default prefixed by x_studio_.

    • Optionally, select a different Widget via the dropdown; the default widget for the field type is selected by default.

    • Optionally, configure any other field properties.

  4. Click Close in the top-right corner to close Studio.

Add an existing field

To add a field that exists on the model but that is not present on the current view, follow these steps:

  1. Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.

  2. In the Add tab, in the left panel, click Existing Fields to reveal a list of all the model's fields that are not currently present in the view.

  3. Drag the relevant field and drop it in the desired position.

  4. In the Properties tab, configure the relevant properties for the field in the current view.

    Catatan

    Various properties can be configured independently for different views, if needed, such as the Label, the Widget, the visibility of the field for certain user groups, as well as whether or not the field is Invisible, Required, or Readonly.

  5. Click Close in the top-right corner to close Studio.

Field properties

A series of general properties can be configured for most combinations of field type and widget. Additional properties are available depending on the specific field type and widget selected. For example, Date & Time fields using the Date & Time or Date Range widget have various specific properties that can be configured.

Properti umum

  • Class: Use Bootstrap or other custom classes defined in Odoo to customize how the field is styled and displayed on the UI.

  • Invisible: Aktifkan properti ini ketika user tidak perlu melihat field di UI. Ini membantu merapikan UI dengan hanya menampilkan field penting tergantung pada situasi tertentu.

  • Required: Aktifkan properti ini jika field harus selalu diisi oleh user sebelum dapat melanjutkan.

  • Readonly: Aktifkan properti ini jika user tidak boleh mengubah field.

Tip

  • The Invisible property also applies inside Studio. To view hidden fields in Studio, click on a view's View tab and enable Show Invisible Elements.

  • The Invisible, Required, and Readonly properties can be enabled for specific records only by clicking on Conditional and creating a filter.

    Example

    On the form view of the Contact model, the Title field only appears when Individual is selected, as that field would not be helpful for a Company contact.

  • Label: This is the field name on the UI; the label is used to generate the technical name of the field.

  • Help Tooltip: Untuk menjelaskan tujuan field, tambahkan deskripsi. Teks akan ditampilkan di dalam kotak tooltip saat mengarahkan mouse ke tanda tanya di samping label field.

  • Technical Name: To view a field's technical name in Studio (and, during the configuration of a new field, edit it if desired), activate developer mode.

    Tip

    If this field needs to be updated but is no longer editable via Studio, the technical name can be modified via the technical settings of the database.

  • Widget: Untuk mengubah tampilan atau fungsionalitas default field, pilih salah satu widget yang tersedia.

  • Placeholder: To provide an example of how a field should be completed, add a fixed placeholder text. The text appears in light gray until a value is entered.

  • Dynamic Placeholder: To provide the value of the selected field as an example of how a field should be completed. The text appears in light gray until a value is entered.

  • Default value: Untuk menampilkan nilai default di field saat record dibuat, tambahkan nilai.

  • Allow visibility to groups: Untuk membatasi user mana yang dapat melihat field, pilih satu atau lebih grup akses user.

  • Forbid visibility to groups: Untuk mencegah user tertentu melihat field, pilih satu atau lebih grup akses user.

Properti untuk field Date & Time

For Date & Time fields using the Date & Time or Date Range widget, some specific properties are available:

  • Minimal precision: Determine the smallest date unit that must be selected in the date selector. The possible values are Day, Month, Year or Decade. If no value is selected, the user must select a day in the date selector.

  • Maximal precision: Determine the largest date unit that can be used to navigate the date selector. The possible values are Day, Month, Year or Decade. If no value is selected, the user can navigate the date selector by decade.

  • Warning for future dates: Aktifkan properti ini untuk menampilkan ikon peringatan jika tanggal di masa depan dipilih.

  • Date format: Secara default tanggal akan ditampilkan sebagai Apr 2, 2025, 08:05 AM. Aktifkan properti ini untuk menampilkan tanggal dalam format 4/2/2025 08:05:00. Mode numerik adalah format yang ditetapkan pada bahasa saat ini. Dalam mode ini detik selalu ditampilkan.

  • Show date: Properti ini diaktifkan secara default untuk field Date & Time. Nonaktifkan properti ini untuk hanya menampilkan waktu.

  • Show time: Properti ini diaktifkan secara default untuk field Date & Time. Pada field read-only, nonaktifkan properti untuk hanya menampilkan tanggal. Ini dapat membuat tampilan daftar lebih rapi, misalnya.

  • Show seconds: Properti ini dinonaktifkan secara default untuk field Date & Time. Aktifkan properti untuk menampilkan detik.

  • Time interval: Masukkan nilai untuk menentukan interval menit yang ditampilkan dalam pemilih waktu. Misalnya, masukkan 15 untuk memungkinkan interval seperempat jam. Nilai default ditetapkan ke 5 menit.

  • Earliest accepted date: Masukkan tanggal paling awal yang dapat dipilih dalam pemilih tanggal dalam format ISO, yaitu YYYY-MM-DD. Jika tanggal saat ini selalu merupakan tanggal paling awal yang diterima, masukkan today. Pada pemilih tanggal, tanggal sebelum tanggal paling awal yang diterima ditampilkan abu-abu.

  • Latest accepted date: Masukkan tanggal paling akhir yang dapat dipilih dalam pemilih tanggal dalam format ISO, yaitu YYYY-MM-DD. Jika tanggal saat ini selalu merupakan tanggal paling akhir yang diterima, masukkan today. Pada pemilih tanggal, tanggal setelah tanggal paling akhir yang diterima ditampilkan abu-abu.

Modify a field's properties

To modify the properties of a field, follow these steps:

  1. Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.

  2. Click on the relevant field.

  3. In the Properties tab, make any desired changes to the field properties.

    Tip

    Various properties can be configured independently for different views, such as the Label, the Widget, the visibility of the field for certain user groups, as well as whether or not the field is Invisible, Required, or Readonly.

  4. Click Close in the top-right corner to close Studio.

Catatan

The Technical Name of a field (visible in Studio with developer mode activated) cannot be modified in Studio; this can be done via the technical settings of the database.

Modify a field's technical name

To modify the technical name of a field, activate developer mode, then follow these steps:

  1. With the field open in Studio, copy the technical name of the field.

  2. Remove the field from all views in Studio, then click Close to close Studio.

  3. Navigate to Settings app ‣ Technical ‣ Fields.

  4. Paste the copied technical name into the search bar, then open the relevant field.

  5. Modify the Field Name as needed.

Once the field's technical name has been updated, the field can then be added (back) to the relevant view(s) from the list of existing fields.

Penting

When updating the technical name of a field, make sure to keep at least the x_ prefix, which is required for any custom field; for fields created using Studio, keep the x_studio_ prefix to allow such fields to be more easily identified.

Remove a field from a view

To remove a field from a view, follow these steps:

  1. Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.

  2. Click on the relevant field.

  3. Scroll to the bottom of the Properties tab, then click Remove from view.

  4. Click Ok to confirm the action.

Tip

  • A removed field can be easily added back to the view at a later stage, if needed.

  • If the intention is to declutter the view, it is also possible to modify a field and make it Invisible on the view in question.