Skip to content

Field type glossary

The runtime snapshot reports each field's technical type. Use fields_get to confirm attributes in the target environment.

Type Typical JSON value Integration notes
boolean true, false Odoo also uses false for many empty optional values
char "ABC" Short text; size and validation may be model-specific
text "Long text" Plain multi-line text
html "<p>...</p>" Sanitized HTML; do not treat as trusted markup outside Odoo
integer 42 Signed whole number
float 12.5 Precision can depend on decimal-precision configuration
monetary 125.99 Interpret with the field's currency relation and rounding
date "2026-06-28" Date without time or timezone
datetime "2026-06-28 14:30:00" Stored in UTC; context affects display conversion
selection "posted" Stable technical key chosen from model-defined options
binary Base64 string Prefer attachment/content routes for large files where appropriate
many2one [42, "Name"] Write the target ID or false
one2many [10, 11] Write using relation command triples
many2many [10, 11] Write using relation command triples
reference "res.partner,42" Polymorphic model and record reference
properties JSON object/array Dynamic property schema; inspect the owning model and context

Empty values

Odoo frequently serializes an unset value as false, including optional text, date, and many2one fields. Client schemas should account for false as well as the non-empty value type unless the API boundary normalizes it.

Computed fields

A computed field can be stored or non-stored. Readonly metadata usually means the value must be changed through its source fields or a business method. Never force computed results through a direct write without understanding the owning module.

Monetary values

Do not infer currency from a float alone. Read the associated currency field and apply Odoo's configured rounding. Financial integrations should compare rounded decimal amounts, not binary floating-point values.