handle
The drag dots on the left of Odoo list rows are the handle widget. It has no options at all; everything that matters happens in the sequence field underneath it.
| Technical name | handle |
|---|---|
| Field types | integer |
| Views | list (including one2many lists) |
| Module | web, present in every Odoo database |
| Used in core | 155 occurrences across 58 modules, including account, event, website_slides, product, project, mrp |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Partly: Studio can add a sequence field, but the widget is set in XML |
| Alternatives | priority, integer, statusbar |
What the handle 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 |
|---|---|---|
(none) | n/a | The widget declares no supportedOptions in the source. Requirements live at field and view level: an integer field, widget="handle" on it, and the list sorted by that same field. |
The number one failure mode is a sorting mismatch. The widget writes the integer, but the LIST decides the display order. If the list is sorted by anything other than the handle's field, by a date column the user clicked, or a model _order that ignores sequence, dragging saves values you never see applied. Keep default_order="sequence" on the list and put sequence first in the model's _order.
Working examples
What a drag actually writes
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The development branch shows no behavior changes; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Same behavior. No XML changes needed. |
| Odoo 17.0 | Verified | Same behavior. No XML changes needed. |
| Odoo 16.0 | Verified | Same behavior. No XML changes needed. |
Upgrade note. The widget is one of the most stable in the codebase: no options in any supported version, so view XML from Odoo 16 carries to 19 untouched. Anything that broke after a migration is in the list ordering or a customized list view, not in the widget.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Dragging a row snaps it back to where it was | The list is sorted by another column or the model's _order ignores the sequence field. Set default_order="sequence" on the list and put sequence first in _order. |
| Drag dots do not appear | The widget sits on a non-integer field, or the user lacks write access to the records. Check the field type is integer and the user can write; the handle hides in readonly contexts. |
| Dragging between groups does nothing | Grouped lists restrict reordering to within a group by design. Remove the grouping to reorder freely, or drag within the group. |
| New rows appear at the top instead of the end | The sequence field's default is 0 while existing rows carry higher values. Give the field a default like 10, or compute the next value in create(). |
| Report or PDF ignores the dragged order | The report query has its own sort and does not order by sequence. Order the report's recordset by sequence explicitly. |
Handle widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
handle | Lists users arrange by hand: order lines, stages, steps | Writes integers into a sequence field; the list's sort order does the rest |
priority | Ranking a few records by importance | Stars set a level per record; they do not define a total order |
integer | Typing exact sequence numbers directly | Manual number entry, no dragging; useful for bulk renumbering |
statusbar | Position in a workflow rather than in a list | Moves a record through stages; unrelated to row order |
Frequently asked questions
How do I let users drag and drop rows in an Odoo list?+
Why does dragging rows not change the order?+
Does the handle widget have any options?+
Can I add drag-and-drop ordering from Odoo Studio?+
What does Odoo write when I drag a row?+
Does the handle work in kanban views?+
Lists that never sit in the right order?
Drag-and-drop ordering, sensible defaults for new rows, and reports that respect the arranged order are small view-and-model changes we bundle into any Odoo customization work, on Odoo 16 through 19.
Book a free consultation