radio
The radio widget lays every choice of a selection or many2one field out as radio buttons, so users see all options before picking one.
| Studio name | Radio |
|---|---|
| Technical name | radio |
| Field types | selection, many2one |
| Views | form, list (editable), settings |
| Module | web, present in every Odoo database |
| Used in core | 151 occurrences across 56 modules, including website_sale, hr_holidays, account, product, stock, survey |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Yes, via Odoo Studio (Enterprise) |
| Alternatives | selection, selection_badge, priority, statusbar |
What the radio widget does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
horizontal | boolean | Lays the radio buttons out in a row instead of the default vertical column. That is the widget's entire option surface, verified in the source. |
There is no creation path, and that is a feature. A many2one rendered as radio buttons offers no Create entry, no quick-create from typed text, nothing. Where a dropdown needs no_create bolted on to lock a taxonomy, the radio widget is closed by construction. If users must also add records, keep the dropdown.
Working examples
How the record list is really loaded
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Options unchanged in the development branch; loading gains offline resilience. See below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Same option and behavior. No XML changes needed. |
| Odoo 17.0 | Verified | Same option and behavior. No XML changes needed. |
| Odoo 16.0 | Verified | Same option and behavior. No XML changes needed. |
Upgrade note. The single horizontal option and both supported types are unchanged from Odoo 16 through 19, so views migrate untouched. Only JavaScript patches on the component need review, as its internals moved to hooks over the versions.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Way too many radio buttons render | The many2one has no domain, so every record of the related model becomes a button. Add a domain to the field, or switch to a dropdown for open-ended models. |
| A choice is missing from the buttons | The field's domain or a record rule excludes that record, or it is archived. Check the domain and the record's active flag; test as admin without the domain. |
| Users cannot clear the field | Radio semantics never unselect by design. Add an explicit none/empty choice, or use a dropdown if blank is a legal state. |
| Horizontal row wraps badly on small screens | Too many or too long labels for a row layout. Drop the horizontal option or shorten the labels; vertical is the safer default past three choices. |
| Users expect to add a new record from the buttons | The widget has no creation path at all. That is by design; use a dropdown (many2one) when users must create records inline. |
Radio widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
radio | 2 to 5 mutually exclusive choices users should see at once | All options always visible; no search, no creation |
selection | Longer or rarely-inspected choice lists | Dropdown: compact, searchable on many2one, clearable |
selection_badge | The same visible-choices idea with a button look | Renders choices as clickable badges rather than radio circles |
priority | Ranked levels like priority or rating | Stars communicate ordering, not arbitrary categories |
statusbar | Workflow stages | Lives in the form header and represents process position |
Frequently asked questions
How do I show a selection field as radio buttons in Odoo?+
How do I make Odoo radio buttons horizontal?+
Can users create a new record from a radio widget?+
How do I limit which records appear as radio buttons?+
Why does my radio field slow the form down?+
Radio or selection_badge, which should I use?+
Forms your team fills without thinking twice?
Choosing the right control per field, radio here, dropdown there, badges where speed matters, is exactly the kind of UX pass we run over Odoo forms during customization work on Odoo 16 through 19.
Book a free consultation