many2many_checkboxes
The Checkboxes field lists every record of a relation as a tickbox: no search, no create, the whole choice space visible at once. Ideal for short fixed sets like product routes.
August 16, 2026Updated August 16, 20266 min read
| Studio name | Checkboxes |
|---|---|
| Technical name | many2many_checkboxes |
| Field types | many2many |
| Views | form |
| Module | web, present in every Odoo database |
| Used in core | 8 occurrences across 5 modules, including lunch, stock, website, account_edi, event_booth_sale |
| 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 | many2many_tags, radio, many2many_tags_avatar, one2many |
What the Checkboxes field does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Working examples
The 100-record cap and the 500ms batch window
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Behavior preserved on the development branch over new RPC plumbing; details below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Byte-identical component to 19.0. |
| Odoo 17.0 | Verified | Same behavior and absence of options. |
| Odoo 16.0 | Verified | Available with the same rendering; the widget predates the current web client. |
Upgrade note. The 18.0 and 19.0 components are byte-identical, and the widget has behaved this way for years. Views carry across upgrades untouched; only the Odoo 20 internals change, without affecting XML.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Some records never appear as checkboxes | The list is capped at 100 records by the ORM's default name_search limit, with no visual hint. Tighten the field's domain, or switch to many2many_tags for large sets. |
| The widget shows nothing at all | The domain matched no records; the widget still renders, just empty. Check the domain and the related model's active records. |
| Users cannot add a new option from the field | The widget has no creation path by design. Create the record in its own model first, or use a tags widget where quick-create fits. |
| Used on a one2many field, nothing renders correctly | Supported types are many2many only. Use the one2many list widget or restructure the relation. |
| Onchange logic seems to lag behind the clicks | Changes are debounced for 500ms and committed as one batch. Expected; the batch commits before saving, on unmount and on demand. |
| Boxes are unticked after checking them and switching records fast | Interrupting the debounce window in older customized builds; core commits on unmount. Verify no custom patch removed the unmount commit; core behavior is safe. |
Checkboxes field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2many_checkboxes | Short, fixed option sets the user should see in full | Every candidate rendered, no search, no create, capped at 100 |
| many2many_tags | Long or user-extensible lists | Search-based pills with optional creation and colors |
| radio | Choosing exactly one option, all visible | Single choice on selection or many2one fields |
| many2many_tags_avatar | Picking people rather than options | Avatar pills with search, better for user sets |
| one2many | Relations whose records carry data worth seeing in columns | Full grid, supports one2many |
Frequently asked questions
What does many2many_checkboxes do in Odoo?+
How many records can the checkboxes widget show?+
Can users create new records from the checkbox list?+
How do I set up checkboxes in Odoo Studio?+
Why does Odoo wait a moment before reacting to my ticks?+
Does many2many_checkboxes work on one2many fields?+
Anything changing in Odoo 20 for this widget?+
Forms your users configure at a glance?
Picking the right widget per field is cheap; living with the wrong one is not. We refine Odoo forms field by field, from route and compliance checklists to fully custom selection widgets when the standard ten are not enough.
Refine your Odoo forms