Skip to main content
iVentureTeam

depend_on_ids_one2many

The blocking tasks list on a shared project task. It exists because the portal view is not the backend view, and the standard list renderer assumes things the portal cannot offer.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated September 8, 20265 min read
Technical namedepend_on_ids_one2many
Field typesone2many, many2many
Viewsform, with an embedded list
Moduleproject, the Project app
Used in core1 occurrence, the shared task form in the project sharing portal
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0
No-code setupNo. It belongs to the project sharing interface
Alternativesone2many, many2many_tags, task_done_checkmark, list_activity

What the task dependencies list does

Project sharing lets a customer or a contractor open a project's tasks through a portal, in an interface that looks like Odoo but is not the backend. It runs a restricted set of components, with its own views and its own idea of what a portal user may do.

Task dependencies have to appear there, because knowing what a task is waiting on is often the whole reason for looking. But the standard child list assumes backend behavior, so project sharing supplies its own renderer.

This widget is the field that uses it. Structurally it is as small as a widget gets: a child list with one component swapped. What it buys is that the dependencies render correctly in an interface that is deliberately not the backend.

What this means for your team

Shared project access is a commercial feature before it is a technical one: it replaces status emails with a link. That only works if the shared view answers the questions a client actually has, and the first of those is usually why something has not started.

Showing dependencies read-only is the right default for that audience. A client can see that a task is waiting on two others without being able to open, reassign or reorder them, which keeps the portal informative without making it a second place where the project is managed.

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 list. What matters in practice are the attributes the core view sets, listed below and verified against the Odoo 19.0 source and view.

OptionTypeWhat it does
linkbooleanForwarded to the embedded list. Core sets it to false so a portal user can see dependencies without opening them.(default: true)
editablestring (list attribute)Set on the embedded list. Moot in the core usage, where the field is read-only.

The portal usage is deliberately restrictive. The core view marks the field read-only and switches off the link option, so dependencies are visible but not navigable. Both are view decisions rather than widget behavior, and both are worth keeping in a customization.

Working examples

The core usage

<field name="depend_on_ids"
       widget="depend_on_ids_one2many"
       nolabel="1" readonly="1"
       options="{'link': false}"/>

Read-only and non-navigable, which is the intended shape for a portal audience.

Where it belongs

# project sharing views, not the backend
project/views/project_sharing_project_task_views.xml

The renderer it uses is part of the project sharing component set.

In the backend instead

<field name="depend_on_ids" widget="many2many_tags"/>

Backend task forms use ordinary relational widgets, which have the full navigation this one deliberately does without.

Small on purpose, because the renderer carries it

There is very little code, and that is the point worth making.

The widget subclasses the child list field, replaces the list renderer with the project sharing one, and registers the result. No options, no extra props, no behavior of its own. Everything characteristic lives in the renderer, which belongs to the project sharing component set rather than to this file.

That separation is deliberate and worth recognizing when working on portal features. Project sharing is not the backend with fewer buttons; it is a separate assembly of components, and a widget written for one does not necessarily work in the other. When a portal view needs a relational list, the pattern is to wrap the portal renderer in a small field like this rather than to reuse the backend widget and patch around the differences.

The read-only treatment and the disabled link come from the view rather than the widget, which means a customization could enable them. Whether that is wise depends entirely on what your portal users should be able to reach.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Byte-identical to Odoo 19 on the development branch.
Odoo 19.0VerifiedVerified against the shipped source. Unchanged in substance from Odoo 18.
Odoo 18.0VerifiedFirst version.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. Nothing to do. The widget arrived in Odoo 18 and is unchanged in substance in Odoo 19. What can change around it is the project sharing component set, so a customization of the portal renderer is more likely to need attention than this field.

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 the page after release.

Byte-identical. The file on the development branch matches Odoo 19 exactly, which is expected for a widget whose entire content is one component substitution.

Common problems and fixes

SymptomCause and fix
Dependencies are not clickableThe core view switches the link option off, deliberately, for portal users. Expected. Remove the option only if portal users should navigate into those tasks.
The list does not render in the backendThe renderer belongs to the project sharing component set. Use an ordinary relational widget in backend views.
The field cannot be editedThe core view marks it read-only. Expected for a portal audience; changing it exposes editing to shared users.
Options are ignoredThe widget declares none; the descriptor forwards them to the embedded list. Use the list attributes and the link option instead.
Portal styling looks wrongThe portal renderer expects the project sharing assets. Use the widget only inside project sharing views.
Missing widget errorThe project module is not installed in that database. Install Project.

Task dependencies list vs the alternatives

WidgetBest forKey difference
depend_on_ids_one2manyShowing task dependencies inside the project sharing portalA child list that swaps in the portal's own renderer instead of the backend one
one2manyBackend child listsThe backend renderer, with full editing and navigation
many2many_tagsDependencies shown compactly in the backendTags rather than a list
task_done_checkmarkCompletion flags on project recordsA boolean cell rather than a relation
list_activityThe next action on a task rowActivities rather than dependencies

In the backend, use the ordinary relational widgets for task dependencies; they have navigation and editing this one deliberately avoids. In the portal, this is the widget to use, and the general lesson is to wrap the portal's own renderer rather than to reuse a backend widget in an interface that does not support it.

Frequently asked questions

What does depend_on_ids_one2many actually change?+
One thing: it swaps the list renderer for the project sharing one. Everything characteristic lives in that renderer rather than in the widget.
Why can portal users not click through to a blocking task?+
The core view switches the link option off and marks the field read-only. That keeps the portal informative without turning it into a second place to manage the project.
Can I use it in the backend?+
Not usefully. The renderer belongs to the project sharing component set, which is a separate assembly from the backend.
Does it support options?+
None of its own. The options dictionary is forwarded to the embedded list, which is where the link option is read.
Which versions have it?+
Odoo 18 onwards, unchanged in substance, and byte-identical on the Odoo 20 development branch.

Client visibility without giving away the controls

Shared project access replaces status emails, but only if it shows the right things and hides the rest. We configure Odoo project sharing and portal views on versions 16 through 19.

Book a free consultation

How this page was produced

The single component substitution and the absence of any options were read from depend_on_ids_one2many_field.js on the Odoo 19.0 branch, with the usage, its read-only attribute and its link option taken from project/views/project_sharing_project_task_views.xml. 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.