[19.0][MIG] web_tree_many2one_clickable: Migration to 19.0#3464
Open
[19.0][MIG] web_tree_many2one_clickable: Migration to 19.0#3464
Conversation
Clickable many2one fields for tree views ======================================== This addon provides a separate widget to allow many2one fields in a tree view open the linked resource when clicking on their name. You can also define a system parameter to have this behaviour for all the existing many2one fields in tree views. Installation ============ Install it the regular way. Configuration ============= If you want to have all many2one fields clickable by default, you have to define in *Configuration > Technical > Parameters > System parameters*, a new parameter with name `web_tree_many2one_clickable.default` and with value `true`. Usage ===== For the widget option, you need to add `widget="many2one_clickable"` attribute in the XML field definition in the tree view. For example: `<field name="partner_id" widget="many2one_clickable" />` will open the linked partner in a form view. Known issues / Roadmap ====================== * You cannot deactivate clickable behaviour for an specific many2one field if you configure the system parameter. * The value of the system parameter is retrieved for each many2one field present in the view instead of only once.
If a list contains a node which is not a field (e.g. a button), it will not be found in the fields so we'll have an error trying to get 'type' from undefined.
Includes some manual fixes to silent ESLint warnings.
When for instance a form_view_ref context is defined on a field in a specific tree view, the context should also be passed when opening the form.
Clicking on a field with context like this `{'default_product_id': product_id}` doesn't throws an error.
[MIG] web_tree_many2one_clickable: Migration to 16.0 [MIG] web_tree_many2one_clickable: Migration to 16.0 [MIG] web_tree_many2one_clickable: Migration to 16.0
alexey-pelykh
approved these changes
Mar 3, 2026
Contributor
alexey-pelykh
left a comment
There was a problem hiding this comment.
Thanks for the migration!
The code is identical to 18.0 and all CI checks pass -- clean port. The patch(ListRenderer.prototype, ...) pattern, useService hook, and the web.ListRenderer.RecordRow template extension all work correctly in 19.0.
One minor thing (pre-existing, not introduced by this PR): the doAction call uses target: "target", which is not a recognized ir.actions.act_window target value (current, new, inline, fullscreen, main). It works because Odoo silently falls back to the default, but it would be cleaner as target: "current". Not blocking -- can be addressed separately if desired.
LGTM.
172a227 to
f392b74
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Limitation:
The web_tree_many2one_clickable module injects the button by patching a single base template
web.ListRenderer.RecordRow. However, Odoo 19's Account, Sale, and Purchase modules use specialized list view renderers (account.SectionAndNoteListRenderer.RecordRow,sale.ListRenderer.RecordRow) for their order line fields, which are compiled separately from the base. So the button will be missing from the list view of these form views.