many2many_avatar_user
The Assignees field on project tasks is this widget: user avatars as pills, an avatar card on click, and a kanban quick-assign popover that saves the record instantly.
| Technical name | many2many_avatar_user |
|---|---|
| Field types | many2many, one2many |
| Views | form, list, kanban, activity |
| Also registered as | kanban.many2many_avatar_user, list.many2many_avatar_user, activity.many2many_avatar_user |
| Module | mail, installed with Discuss in every practical database |
| Used in core | 24 occurrences across 8 modules, including project, project_todo, im_livechat, mail, hr_recruitment, mail_group |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Partial. Studio's Many2Many toggles cover creation and domain; the avatar widget itself is set in view XML |
| Alternatives | many2many_tags, many2many_tags_avatar, many2many_avatar_employee, many2one_avatar_user |
What the User avatars field 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 user creation from the picker entirely, overriding the two options below. The kanban quick-assign popover blocks creation regardless. |
no_quick_create | boolean | Inherited. Removes inline creation from typed text; the popup creation form stays. |
no_create_edit | boolean | Inherited. Removes the popup creation form; inline creation stays. |
create | domain | Inherited. Domain expression enabling creation conditionally against the current record. |
search_threshold | number | Inherited. Minimum characters before the user search fires; without it the dropdown queries on focus. |
placeholder_field | field name | Inherited. Char field on the record supplying a dynamic placeholder while empty. |
create_name_field | field name | Inherited and undocumented. Which field receives typed text on inline creation; read in the tags extractProps.(default: name) |
color_field | field name | Inherited from the tags descriptor and accepted, but avatar pills are image-driven; the tags color mechanics are not the point of this widget. |
Two behaviors are automatic, not options. The assign-to command palette integration switches on whenever the view is a form or a list, read from the avatar base's extractProps, and the avatar card popover appears only when the related model is res.users or res.partner, read from the chatter mixin. Neither can be toggled from XML in 19.
Working examples
Variant rules: list names, instant-save popover, gated avatar cards
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Development branch renames the kanban variant to card., adds write_date cache busting and a tagLimit prop; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source across the full descriptor chain. |
| Odoo 18.0 | Verified | Same four registrations verified in the 18.0 source. Internals differ; XML is identical. |
| Odoo 17.0 | Verified | Widget present with the same registry name. Not re-verified line by line for this page. |
| Odoo 16.0 | Verified | Widget present with the same registry name. Not re-verified line by line for this page. |
Upgrade note for 16 to 19. XML carries over unchanged, and the four registrations are stable across 18 and 19. JavaScript customizations are the risk area: the tags list subcomponents this widget wires together were reshaped between releases, so patches against its internals deserve a re-test on every migration.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Clicking an avatar does not open the user card | The card popover is gated to res.users and res.partner relations. Expected on other models; use the generic many2many_tags_avatar there. |
| Kanban shows a +N counter instead of everyone | The kanban variant caps visible avatars at three before collapsing. Expected; open the record or use the quick-assign popover to see all. |
| Assignments from the board saved without confirmation | The quick-assign popover saves the record after every change, by design. Train for it; there is no draft state in that flow. |
| Cannot create a user from the kanban popover | The popover hardcodes creation off, independent of your options. Create users from Settings; the block is deliberate. |
| Names missing next to avatars in list view | The list variant shows names only for a single user or while editing. Expected; hover tooltips carry the names. |
| User search is slow on a huge user table | The dropdown queries on focus by default. Set search_threshold: 2 so typing starts the search. |
| JS patch on the kanban variant broke on the Odoo 20 branch | kanban.many2many_avatar_user is renamed to card.many2many_avatar_user and internals were rebuilt. Re-target the card. name and re-test after release. |
User avatars field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2many_avatar_user | Assignee and follower fields pointing at res.users | Avatar pills plus user card popover, assign commands and an instant-save kanban popover |
| many2many_tags | Non-people relations: tags, categories, labels | Text pills with optional colors, no avatars or user behaviors |
many2many_tags_avatar | Avatar pills on models other than users | Same avatar rendering without the user card, commands or user autocomplete |
many2many_avatar_employee | HR screens assigning employees | Targets hr.employee and switches data source by HR access rights |
| many2one_avatar_user | Exactly one responsible user | Single-value dropdown with the same user avatar treatment |
Frequently asked questions
What is the many2many_avatar_user widget in Odoo?+
Does it support the same options as many2many_tags?+
Why does assigning from the kanban board save immediately?+
Why can I not create a new user while assigning from a card?+
How many avatars show before the +N counter?+
Why does clicking an avatar show a card for some fields but not others?+
What changes for this widget in Odoo 20?+
Assignment workflows that match how your team really works?
Scoped assignee pickers, closed user lists, boards that reassign in one click without surprises: this widget's options cover it, wired correctly per view. We configure and extend Odoo project and HR screens on 16 through 19.
Book a free consultation