many2many_tags_journals
The many2many_tags_journals widget is the Tags field with one accounting-specific trick: when a Multi-ledger group belongs to no company, every journal pill spells out which company it comes from.
August 25, 2026Updated August 25, 20266 min read
| Technical name | many2many_tags_journals |
|---|---|
| Field types | many2many |
| Views | form, list |
| Module | account, installed with Invoicing or Accounting |
| Used in core | 2 occurrences in 1 module: the account.journal.group list and form (Multi-ledger setup) |
| Versions | Odoo 19.0 |
| No-code setup | No. This widget is applied in view XML; Studio has no toggle for it |
| Alternatives | many2many_tags, many2many_tags_avatar, many2many_checkboxes |
What the journal tags widget does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
no_create | boolean | Inherited from many2many_tags. Removes every creation path from the dropdown. Core sets it on both Multi-ledger views so accountants cannot create journals from the group screen. |
color_field | field name | Inherited from many2many_tags. Name of an integer field on account.journal holding a color index. Core does not use it here, but it works if your customization adds one. |
no_quick_create | boolean | Inherited from many2many_tags. Removes only the inline Create entry that turns typed text into a record. |
no_create_edit | boolean | Inherited from many2many_tags. Removes only the Create and Edit entry that opens a popup form. |
search_threshold | number | Inherited from many2many_tags. Minimum characters typed before the journal search fires. |
placeholder_field | field name | Inherited from many2many_tags. A char field on the parent record supplying a dynamic placeholder. |
The company prefix is not an option. There is no key to force or suppress the Company - Journal text. The widget reads the parent record's company_id value at render time: empty means prefixed pills, set means plain pills. If you need different behavior you must subclass, not configure.
Working examples
How the company prefix actually works
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The development branch deletes the widget; journal group views switch to many2many_tags with a show_company_journal context key. Re-verified after launch. |
| Odoo 19.0 | Verified | Introduced in Odoo 19 together with the Multi-ledger journal group screens. Behavior verified against the shipped source. |
| Odoo 18.0 | Not available | The widget does not exist. Journal groups render with the standard many2many_tags widget. |
| Odoo 17.0 | Not available | The widget does not exist. |
| Odoo 16.0 | Not available | The widget does not exist. |
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The view crashes or the field renders blank on a custom model | The template reads record.data['company_id'].id directly, and the model or view does not provide a company_id field. Add a company_id many2one to the model and load it in the view, invisibly if needed, exactly as core does. |
| Pills show plain journal names with no company prefix | The parent record has a company set. Prefixes only render when company_id is empty. This is the designed behavior. Clear the group's company to see cross-company labels. |
| Company names appear in the dropdown but not on the pills, or vice versa | A customization overrode getTagProps or the autocomplete template, which implement the two halves separately. Mirror the same company_id condition in both overrides. |
| Widget name warning in the console after upgrading past 19 | The component is removed on the Odoo 20 development branch, so the registry falls back by field type. Replace the widget with many2many_tags plus context show_company_journal during migration. |
| Users can create journals from the group screen | A custom view dropped the no_create option that core passes. Restore options="{'no_create': True}" on the field. |
Journal tags widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2many_tags_journals | Journal many2many fields on records whose company can be empty | Prefixes each pill and dropdown entry with the journal's company when the parent has no company |
| many2many_tags | Every ordinary tag list, including journals on single-company models | No company awareness; identical names from different companies are indistinguishable |
| many2many_tags_avatar | People rather than journals | Shows record avatars inside the pills instead of text prefixes |
| many2many_checkboxes | Short fixed journal lists users must see in full | Renders every journal as a checkbox, with no search and no pills |
Frequently asked questions
Where does Odoo actually use many2many_tags_journals?+
Why do my journal pills show a company name in front?+
Can I use many2many_tags_journals on my own model?+
Does it support the same options as many2many_tags?+
What happens to this widget in Odoo 20?+
Is many2many_tags_journals available in Odoo 16, 17 or 18?+
Multi-company accounting quirks eating your week?
Shared ledgers, company-scoped journals and consolidation views are where multi-company Odoo setups go wrong quietly. We configure and extend Odoo accounting for groups running 16 through 19, and we already track the Odoo 20 branch where this widget disappears.
Talk to an Odoo accounting expert