many2one_avatar
The generic avatar dropdown: a standard many2one with the linked record's picture in front of its name. Same options as many2one, plus one opening rule of its own.
| Technical name | many2one_avatar |
|---|---|
| Field types | many2one |
| Views | form, list, kanban |
| Also registered as | kanban.many2one_avatar |
| Module | web, present in every Odoo database |
| Used in core | 32 occurrences across 12 modules, including fleet, website, marketing_card, crm, im_livechat, lunch |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No documented Studio path for this widget; it is set in view XML. Studio's Many2One toggles map to the same options it reads |
| Alternatives | many2one, many2one_avatar_user, many2one_avatar_employee, many2many_tags_avatar |
What the Avatar dropdown does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
no_open | boolean | Controls click-through to the linked record. Absent: opening works only in form views. Present: the explicit value wins everywhere, so no_open: False forces opening even in list cells. This default rule is specific to the avatar widget.(default: open in form views only) |
no_create | boolean | Removes record creation from the dropdown entirely. Overrides no_quick_create and no_create_edit, and also disables the can_create view attribute path. |
no_quick_create | boolean | Removes the inline entry that creates a record from the typed text. Creation through the popup form stays available. |
no_create_edit | boolean | Removes the Create and Edit entry that opens a popup form. Inline creation from typed text stays available. |
search_threshold | number | Minimum characters typed before the search query fires. Without it, the dropdown searches on focus, one query per click on large tables. |
placeholder_field | field name | A char field on the current record supplying a dynamic placeholder while the field is empty. |
can_scan_barcode | boolean | Enables barcode scanning to fill the field on mobile. Read in the shared extractProps; it appears in no options panel or documentation. |
create_name_field | field name | Which field on the related model receives the typed text on inline creation. Undocumented; read in the shared extractProps.(default: name) |
no_open behaves differently here than on a plain many2one. On many2one the default is open-on-click everywhere. On many2one_avatar the source reads the option explicitly: if no_open is present it wins in either direction, and if it is absent, opening is enabled only when the view is a form. Setting options="{'no_open': False}" is therefore meaningful on this widget: it forces click-to-open even in list cells.
Working examples
The avatar_128 contract and other source details
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The development branch adds write_date cache busting and renames the kanban variant to card.many2one_avatar; see below. |
| Odoo 19.0 | Verified | All options in the table verified against the shipped source. |
| Odoo 18.0 | Partial / changed | Widget present with the same registrations, but no_open is ignored: opening is hardcoded to form views only. |
| 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 18 to 19. In Odoo 18 this widget forced its form-only opening rule and ignored no_open entirely; in 19 an explicit no_open wins. If your 18 views carry no_open on avatar fields expecting it to do nothing, review them during an Odoo migration, because in 19 the option now takes effect.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Broken image icon instead of an avatar | The related model has no avatar_128 field, so the /web/image request 404s. Add Odoo's avatar mixin to the model, or use a plain many2one instead. |
| Clicking the value does nothing in list view | Default behavior: opening is enabled only in form views. Set options="{'no_open': False}" to force opening everywhere (Odoo 19). |
| no_open has no effect on Odoo 18 | The 18 version of this widget overwrites the option with its own form-only rule. Accept the default on 18, or upgrade; Odoo 19 honors the option. |
| Avatar does not update after changing the picture | The browser caches the avatar URL. Hard-refresh. The Odoo 20 development branch adds write_date cache busting for exactly this. |
| Users create duplicate records from the dropdown | Inline quick-create is enabled by default. Set no_create for a closed list, or no_quick_create to force the full creation form. |
| Empty rows show nothing at all in the avatar column | Expected: with no value and readonly rendering, the template outputs nothing. No fix needed; the empty placeholder circle appears only while editing. |
Avatar dropdown vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2one_avatar | Any many2one to a model with avatars, beyond users and employees | Adds the avatar_128 image to the standard dropdown, with form-only opening by default |
many2one | Relations where a name is enough | Same behavior without the image, and opens on click in every view by default |
| many2one_avatar_user | Fields pointing at res.users, such as Assignee | Adds the avatar card popover and assign-to commands on top of the image |
many2one_avatar_employee | HR screens pointing at employees | Switches between public and private employee data based on HR access rights |
many2many_tags_avatar | Several linked records with avatars | Renders a many2many as avatar pills instead of a single dropdown |
Frequently asked questions
What does the many2one_avatar widget do in Odoo?+
Why is my avatar showing as a broken image?+
Can I choose which image field the avatar comes from?+
Why does clicking the value open the record on the form but not in the list?+
Does many2one_avatar support the same options as many2one?+
When should I use many2one_avatar_user instead?+
Will many2one_avatar change in Odoo 20?+
Want faces on your records, not just names?
Avatar fields on custom models need the avatar mixin wired in correctly, and the open, create and search options tuned per view. We do this kind of precise view and model work daily, for Odoo 16 through 19 databases.
Book a free consultation