Skip to main content
iVentureTeam

notebook_task_one2many

A task list rendered inside a notebook tab, with its own renderer and one adjustment: a kanban card opens the task rather than a dialog.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated August 28, 20264 min read
Technical namenotebook_task_one2many
Field typesone2many
Viewsform, with an embedded list or kanban
Moduleproject, the Project app
Used in core1 occurrence, a task list inside a notebook tab in project
VersionsOdoo 20.0, Odoo 19.0
No-code setupNo. It is a project-specific list widget
Alternativessubtasks_one2many, one2many, subtask_kanban_list, many2many

What the notebook task list does

A notebook tab is a constrained space: it sits under a form's header, shares width with everything else, and is usually one of several tabs competing for attention. A task list rendered there needs different column choices and different density from the same list on its own screen.

This widget supplies that, by swapping in a renderer written for the notebook layout. The list of tasks itself is ordinary; what changes is how it is drawn inside the tab.

It also makes one behavioral adjustment. When the tab shows tasks as kanban cards, clicking a card is routed through the switch to the form view, so it navigates to the task rather than opening it in a dialog on top of the current record.

What this means for your team

Related tasks shown on a parent record are a navigation aid, not a workspace. Treating a card click as navigation rather than as a dialog reflects that: the user wants to go to the task, not to edit it in a popup while the parent sits behind.

Where this matters practically is choosing between the two similar Project widgets. This one and the sub-tasks widget look interchangeable and are not, because only the sub-tasks widget filters the parent's context. On a list of tasks that are not children of the current record, passing the context through is usually what you want; on true sub-tasks it usually is not.

Supported options in Odoo 19

The widget declares no supported options, and neither does the x2many descriptor it spreads: the options dictionary is forwarded to the embedded view. The controls that matter are the field attributes below. Read from notebook_task_one2many_field.js, Odoo 19.0.

OptionTypeWhat it does
modestring (field attribute)Which subviews are available. In kanban mode the widget routes card opening through the form switch; in list mode it does not.(since Odoo 19.0)
contextstring (field attribute)Passed through unfiltered when a task is opened, unlike the sub-tasks widget which strips it down.(since Odoo 19.0)
editablestring (list attribute)Set on the embedded list. Governs inline editing of the rows.

It does not filter the context. That is the one substantive difference from the sub-tasks widget, which strips everything except default keys and two flags. Here the parent's context reaches the opened task intact, so anything set on the parent screen applies.

Working examples

The core usage, trimmed

<notebook>
  <page string="Tasks">
    <field name="task_ids"
           widget="notebook_task_one2many"
           mode="list,kanban"/>
  </page>
</notebook>

Both view modes work, and the kanban mode is where the opening behavior differs.

Presetting new tasks

<field name="task_ids"
       widget="notebook_task_one2many"
       context="{'default_project_id': id}"/>

Context passes through unfiltered, so defaults and anything else both apply.

The sub-tasks alternative

<field name="child_ids" widget="subtasks_one2many"/>

Similar list, but the context is filtered before a record is opened.

The difference from its sibling is what is missing

The widget is twenty lines and does two things: it substitutes the notebook renderer, and it overrides the renderer properties so that in kanban mode the open handler becomes the widget's own switch to the form.

That override is conditional on the view mode, which is worth noting because it means the same field element behaves differently depending on which subview is showing. In list mode nothing is changed, so a row opens the way any embedded list row does.

The absence of context filtering is the more consequential difference, and it is an absence rather than a decision written in code, so it is easy to miss when comparing the two Project list widgets side by side. If a task opened from a notebook tab inherits something unexpected, the parent screen's context is where to look.

Everything about how the list is drawn belongs to the substituted renderer rather than to this file, which is why the widget itself carries almost no logic.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Byte-identical to Odoo 19 on the development branch.
Odoo 19.0VerifiedFirst version. Verified against the shipped source.
Odoo 18.0Not availableWidget does not exist. The tab used a plain child list.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. The widget is new in Odoo 19. On Odoo 18 and earlier the same tab used a plain child list, so an upgrade changes how the tab renders with the standard project views and nothing needs migrating.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify this page after the release.

Byte-identical. The file on the development branch matches Odoo 19 exactly, including the conditional kanban handling.

Common problems and fixes

SymptomCause and fix
A kanban card opens a dialogThe embedded view is not a kanban, or the renderer properties were overridden. Check the mode attribute and any customization of the renderer.
An opened task inherits an unexpected valueThe context passes through unfiltered. Narrow the field's context, or use the sub-tasks widget where filtering is wanted.
The list looks like a normal embedded listThe notebook renderer is what differs, and it may be overridden. Check for a customization replacing the renderer.
Options are ignoredThe widget declares none and the descriptor forwards them to the embedded view. Use the list attributes instead.
Rows cannot be edited inlineThe embedded list is not declared as editable. Set the editable attribute on the list.
Missing widget errorThe project module is not installed in that database. Install Project, or use a plain child list.

Notebook task list vs the alternatives

WidgetBest forKey difference
notebook_task_one2manyA related task list rendered inside a notebook tabNotebook-specific renderer, and kanban cards navigate rather than opening a dialog
subtasks_one2manyTrue sub-tasks of the current recordFilters the parent's context before opening a record
one2manyAny ordinary child listThe standard renderer and the standard opening behavior
subtask_kanban_listSub-tasks inline on a kanban cardA view widget on the card rather than a field on a form
many2manyLinking existing tasksLinks rather than owned children

Use the sub-tasks widget where the records really are children of the current one, because its context filtering is the right default there. Use a plain child list where neither the notebook layout nor the navigation adjustment is needed.

Frequently asked questions

How does it differ from the sub-tasks widget?+
Two ways. It uses a renderer written for the notebook layout, and it does not filter the parent's context when a task is opened. The sub-tasks widget keeps only default keys and two flags.
Why does a kanban card navigate instead of opening a dialog?+
In kanban mode the widget replaces the renderer's open handler with its own switch to the form view. Related tasks on a parent record are usually somewhere you want to go, not something to edit in a popup.
Does it support options?+
None of its own. The options dictionary is forwarded to the embedded view as CRUD settings.
Can I use it outside a notebook?+
Nothing prevents it, but the renderer's layout choices are made for a tab, so it will look denser than it should elsewhere.
Which versions have it?+
Odoo 19 onwards, and it is byte-identical on the Odoo 20 development branch.

Project forms that lead somewhere useful

Related records on a form are navigation, and the wrong click behavior turns them into friction. We tune Odoo Project forms and the flows between them, on versions 16 through 19.

Book a free consultation

How this page was produced

The renderer substitution, the conditional kanban open handling and the absence of any context filtering were read from notebook_task_one2many_field.js on the Odoo 19.0 branch and compared against the sub-tasks widget in the same module. Version coverage comes from the absence of the file on 16.0 and 17.0, a comparison with 18.0, and a byte comparison against the public development branch. Spotted an error? Tell us and we will correct the page.