Multi Selection Char Field
A configurable multi-select widget for Odoo 19 Char fields. Choose between a checkbox grid or a modern badge token UI â no database schema changes required.
Why this module?
Odoo's native char field accepts free text. This widget turns it into a structured multi-select control. Selected values are stored as a single separator-separated string, making it fully compatible with any existing Char field without migrations.
Designs
checkbox (default)
- Edit mode: responsive multi-column grid of checkboxes.
- Readonly mode: the same grid with all checkboxes disabled â users can always see all available options and which are selected.
badge
- Edit mode: selected values appear as colored badge tokens, each with a à button to deselect. A search input filters the unselected options shown below. If
allow_newisTrue, the search input doubles as an add-new field â press Enter or click + to add a custom value. - Readonly mode: only the selected badges are shown, no controls.
Options
-
valuesâ Predefined list of options.
Example:['Engine', 'Rims', 'Spoilers', 'Flaps'] -
separatorâ Character used to join/split stored values. Default:','. -
columnsâ Number of columns in the checkbox grid. Default:2. -
designâ'checkbox'(default) or'badge'. -
allow_newâTrue/False. When True, the user can type and save custom values not in the predefined list. Default:False.
Screenshots
XML usage
<!-- Checkbox design (default) -->
<field name="parts"
widget="multi_selection_char"
options="{
'values': ['Engine', 'Rims', 'Spoilers', 'Flaps'],
'columns': 2
}"/>
<!-- Badge design with allow_new -->
<field name="tags"
widget="multi_selection_char"
options="{
'values': ['Urgent', 'Review', 'Approved'],
'design': 'badge',
'allow_new': True
}"/>
Unknown value handling
If the database contains values not present in the configured values list
(e.g. from a migration or manual edit), they surface automatically at the bottom of the
list in warning color and are pre-selected. This prevents silent data loss when the
predefined list changes.
Please log in to comment on this module