property_selection
New in Odoo 20. It lets a char field pick from the choices of a properties definition living on another record, and it is written with an OWL 3 API that appears nowhere else in Odoo's web module.
September 18, 2026Updated September 18, 20265 min read
| Technical name | property_selection |
|---|---|
| Field types | char |
| Views | form |
| Module | web, present in every Odoo 20 database |
| Used in core | 1 use across Odoo 20 Community and Enterprise views, excluding tests. Does not exist in Odoo 19. |
| Versions | Odoo 20.0 |
| No-code setup | No. All three options are required and none are exposed in Studio. |
| Alternatives | selection, property_tags, properties, badges_selection |
What the property_selection widget does
What this means for your team
Supported options in Odoo 20
| Option | Type | What it does |
|---|---|---|
property_model_name | string | <strong>Required.</strong> Technical name of the model carrying the properties definition, for example project.project. Its prop is declared as a bare String, so omitting it fails prop validation.(since Odoo 20.0) |
property_field_name | string | <strong>Required.</strong> Name of the properties definition field on that model, for example task_properties_definition.(since Odoo 20.0) |
property_name | string | <strong>Required.</strong> Key of the individual property inside that definition whose selection values should be offered. A key that does not exist yields an empty list rather than an error.(since Odoo 20.0) |
The component declares its props as bare String with no optional marker:
props = props({
...standardFieldProps,
propertyName: String,
propertyFieldName: String,
propertyModelName: String,
});So omitting any one of them fails prop validation rather than degrading to a sensible default. All three must be present for the field to render at all.
Working examples
The only file in Odoo 20's web module written this way
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 19.0 | Not available | Does not exist. No registration under this name in Odoo 19. |
| Odoo 20.0 | Verified | Introduced in Odoo 20. Verified against the shipped 20.0 source. |
This widget does not exist before Odoo 20.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The field renders no choices at all | Three causes look identical: the definitions are still loading, the property key does not exist, or the property has no selection values. The optional chaining and empty fallback collapse all three. Check the property key against the definition on the named model, and confirm the property is of type selection. |
| Prop validation fails and the field does not render | One of the three options is missing. All three props are declared as bare String with no optional marker. Provide property_model_name, property_field_name and property_name together. |
| The selection is empty for a moment when the form opens | asyncComputed renders with an initial empty list while the definitions load. Expected behavior, not a fault. |
| The value does not group or filter usefully in reports | It is stored as text against a definition on another record, not as a real selection field. Use a real selection field if reporting across records matters. |
Property_selection widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
property_selection | Choosing from a user-defined property vocabulary | Three required options, and the only web file using OWL 3's props and computed API |
| selection | A stable list defined in code | Searchable, groupable and reportable |
| property_tags | A property that holds several tags | Multiple values rather than one choice |
| properties | The full set of properties on a record | Renders every property type, not one selection |
| badges_selection | A selection shown as badges | Works on real selection fields, with filtering options |
Frequently asked questions
What options does Odoo's property_selection widget need?+
Why does property_selection show no choices?+
Is property_selection a good example of how to write an Odoo 20 widget?+
Does property_selection exist in Odoo 19?+
Properties that outgrew what they were for?
Properties are excellent while each record needs its own handful of fields, and a reporting problem the moment somebody wants to count them. We know where that line sits and move the vocabulary into real fields before it becomes a cleanup project.
Talk to an Odoo consultant