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.
Quick summary
- Renders a
many2onepointing at users as an avatar plus name instead of a plain link; hovering shows presence and a chat shortcut. - In form and list views it registers the Assign to me command, so pressing
Ctrl+Kand typing "assign" sets the field to you. - It inherits every standard many2one option:
no_open,no_create,no_quick_create,no_create_edit,search_threshold,placeholder_field. - One verified quirk: outside the form view the record link is off by default; pass
no_open: Falseexplicitly to enable it in lists. - The dropdown itself is avatar-aware, showing faces while you search.
- Used 157 times across 40 core modules, anywhere a person is responsible for a record.
- Odoo 20's development branch adds avatar cache-busting via the user's
write_date, so changed profile photos show immediately.
| 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) |
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. |
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