many2one_avatar_user
The assignee field with a face: many2one_avatar_user renders a user link as an avatar with online presence and chat access, and wires up the Assign to me command.
| Studio name | (applied via the widget selector on user fields) |
|---|---|
| Technical name | many2one_avatar_user |
| Field types | many2one |
| Views | form, list, kanban, activity |
| Module | mail (Discuss), installed in practically every database |
| Used in core | 157 occurrences across 40 modules, including mail, crm, hr, hr_recruitment, project, website_slides |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Partly: pick the widget on an existing user field in Studio's Properties panel |
| Alternatives | many2one_avatar, many2many_avatar_user, Default many2one, many2many_tags_avatar |
What the avatar user field does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
no_open | boolean | Controls the internal link to the user record. Unset, this widget enables the link only in form views; set False to force it on in lists, set True to disable it everywhere.(default: unset: link in form view only) |
no_create | boolean | Removes user creation from the dropdown entirely. Overrides the two options below. |
no_quick_create | boolean | Removes the inline Create "typed text" entry; creation through the popup form still works. |
no_create_edit | boolean | Removes the Create and Edit popup entry; inline creation still works. |
search_threshold | number | Minimum characters typed before the user search fires; without it the dropdown searches on focus. |
placeholder_field | field name | A char field on the current record supplying a dynamic placeholder. |
can_scan_barcode | boolean | Enables barcode-scanner input for the field. Read in the inherited extractProps; appears in no options panel. |
create_name_field | field name | Which field receives the typed text on inline creation. Read in the inherited extractProps; undocumented.(default: name) |
The link behavior differs from a plain many2one, verified in extractProps: when no_open is not set at all, the widget enables the link only in form views. A plain many2one is clickable everywhere by default; this one is deliberately quiet in lists and kanbans unless you opt in with no_open: False.
Working examples
The Assign-to-me command and presence
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Adds avatar cache-busting via write_date in the development branch; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 17.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 16.0 | Verified | Same options and behavior. No XML changes needed. |
Upgrade note. The registered name is stable, but the widget moved deeper into the mail module's view code over the versions, and in Odoo 19 it composes the shared Many2One component with an avatar-aware autocomplete. JavaScript patches on the old standalone implementation will need rework; XML carries over untouched.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Clicking the avatar in a list view does nothing | This widget's own default: the record link is form-view-only when no_open is unset. Set options="{'no_open': False}" to enable the link in lists. |
| Assign to me does not appear in the command palette | The command registers on form and list views only, and for the focused record. Focus the record's row or open the form; in kanban use the dropdown instead. |
| No presence dot on the avatar | Presence comes from Discuss and shows for internal users the current user can see. Check the target is an active internal user, not a portal or archived account. |
| Typo created a new user | Quick-create is on by default, and a user record is more consequential than a tag. Add no_create: True on assignee fields; consider a domain excluding share users. |
| Old profile photo keeps showing | Browser-cached avatar URL; Odoo 19 does not key the URL on the photo's change date. Hard-refresh for now. The Odoo 20 development branch fixes this with write_date cache-busting. |
Avatar user field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2one_avatar_user | One responsible user on a record: assignee, salesperson, approver | Avatar with presence and chat, plus the Assign-to-me command in form and list views |
| many2one_avatar | A single partner or employee shown with a photo | Avatar display only: no presence, no chat card, no assign command |
| many2many_avatar_user | Several assignees on one record | Multi-value pills with avatars, the project-task Assignees pattern |
Default many2one | Any relation where a face adds nothing | Plain text link, clickable in every view by default |
many2many_tags_avatar | People as removable tags, such as attendees | Tag pills with avatars on many2many fields |
Frequently asked questions
How do I show the salesperson with an avatar in Odoo?+
What is the fastest way to assign a record to myself?+
Why is the avatar not clickable in my list view?+
Can I use this widget for employees instead of users?+
How do I stop the dropdown offering portal users?+
Does the green presence dot mean the person is working in Odoo?+
Building ownership into your workflows?
Assignee fields, approval chains and workload views only pay off when they match how your team actually routes work. We design and build assignment logic, filtered user domains and the automations around them on Odoo 16 through 19.
Book a free consultation