Odoo model explorer: fields, relations and API
What is the technical name of the Customer field on a quotation? Which model does partner_id point to? Which modules add fields to res.partner? Search for a model below: each page lists its fields with their type, official label, incoming and outgoing relations, plus a ready-to-run JSON-2 API call. No account, no email, covering all 888 models of Odoo 19 Community.
Most viewed models
res.partnerContactbase · Persistent · 203 fieldssale.orderSales Ordersale · Persistent · 143 fieldssale.order.lineSales Order Linesale · Persistent · 120 fieldsaccount.moveJournal Entryaccount · Persistent · 224 fieldsaccount.move.lineJournal Itemaccount · Persistent · 105 fieldsproduct.templateProductproduct · Persistent · 156 fieldsproduct.productProduct Variantproduct · Persistent · 108 fieldsstock.pickingTransferstock · Persistent · 90 fieldsstock.moveStock Movestock · Persistent · 117 fieldsstock.quantQuantsstock · Persistent · 37 fieldspurchase.orderPurchase Orderpurchase · Persistent · 71 fieldscrm.leadLeadcrm · Persistent · 95 fieldsproject.taskTaskproject · Persistent · 102 fieldshr.employeeEmployeehr · Persistent · 179 fieldsmrp.productionManufacturing Ordermrp · Persistent · 95 fieldsres.usersUserbase · Persistent · 140 fieldsres.companyCompaniesbase · Persistent · 260 fieldsaccount.paymentPaymentsaccount · Persistent · 63 fields
- models
- 888
- declared fields
- 12,453
- modules analyzed
- 395
- Odoo version
- 19.0
Data verified on September 23, 2026 · Odoo 19.0 Community
How to use the explorer
The tool answers a question developers, implementers and power users ask every week: what is this field called in the database, and where does it come from? It takes three steps.
- Type a technical name (res.partner, stock.picking) or a word from the label (invoice, contact, leave). Search ignores case and accents.
- Open the model page: identity (SQL table, origin module, modules that extend it), then the full field list, filterable by name or type.
- Share the result: the search URL and each field URL (#field-… anchor) are stable, so you can paste them into a ticket, a specification or a forum reply.
What is an Odoo model?
A model is a Python class describing one kind of record: a contact, an invoice, an order line. The ORM (Object Relational Mapping, the layer that turns Python objects into SQL queries) creates a PostgreSQL table for every persistent model. The res.partner model is stored in the res_partner table.
Technical names follow a simple convention: an application prefix (sale, account, stock, hr) followed by one or more words separated by dots. The res (shared resources) and ir (Information Repository, the technical core) prefixes flag the models of the base module.
| Type | Python class | SQL table | In Odoo 19 Community |
|---|---|---|---|
| Persistent | models.Model | Yes, data is kept | 546 models |
| Abstract (mixin) | models.AbstractModel | No, used to share fields | 142 models |
| Transient (wizard) | models.TransientModel | Yes, purged regularly | 200 models |
Reading a field entry
Every field has a technical name (partner_id), a label shown to users (Customer) and a type. The type defines what you can read or write through the API, and how you can filter on it.
| Type | Content | Example |
|---|---|---|
| char, text, html | Short, long or formatted text | name, comment |
| integer, float, monetary | Whole number, decimal or currency amount | amount_total |
| boolean, date, datetime | Checkbox, date, date and time | active, date_order |
| selection | One value from a closed list | state (draft, sale, cancel) |
| many2one | Link to ONE record of another model | partner_id → res.partner |
| one2many | Records pointing back to this one | order_line → sale.order.line |
| many2many | Multiple links in both directions | tag_ids → crm.tag |
Inheritance: why one model holds fields from dozens of modules
Odoo is modular: each app adds what it needs to existing models instead of duplicating them. The sale module, for example, adds a contact's sales orders to res.partner. The model page shows, for every field, the module that declares it. Three mechanisms coexist.
- Extension (_inherit on the same name): a module adds or changes fields on an existing model. This is the most common case.
- Mixin (_inherit from an abstract model): the model receives a ready-made set of fields, such as the chatter of mail.thread or the activities of mail.activity.mixin.
- Delegation (_inherits): the model is backed by another one and exposes its fields. A res.users user is linked to a res.partner contact through partner_id.
Finding the technical name in your own Odoo
The explorer describes standard Odoo. To check a field in your database, turn on developer mode: Settings, then Activate the developer mode, or add ?debug=1 to the URL. Hover over a form label and a tooltip shows the field's technical name and model.
The Settings > Technical > Database Structure > Models menu also lists every installed model, including your custom modules and fields created with Studio (x_studio_ prefix).
Querying a model through the API
Odoo 19 introduces the JSON-2 API: a POST request to /json/2/<model>/<method>, authenticated with an API key sent in the Authorization header. Every model page provides a copy-ready curl and Python example built with the model's real fields. The fields_get method returns the field definitions of your own database, customizations included.
API keys are created under Preferences > Account Security and are valid for three months at most. According to Odoo's documentation, external API access requires the Custom plan: it is not available on the One App Free and Standard plans.
Method and data limits
Model pages are generated from the source code of Odoo 19 Community (public build of August 28, 2026, LGPL v3 license): 395 installable modules analyzed without running Odoo. Foreign localizations and test modules are excluded; French localizations are kept. French and Spanish labels and help texts come from Odoo's official translation files.
Not covered here: Enterprise modules, your custom modules, Studio fields and selection lists computed at runtime. To query the real schema of YOUR database, Aidoo reads the structure of your models and answers in plain English. Planning an upgrade? See our Odoo 19 migration page.
Frequently asked questions
Does this data apply to Odoo Online, Odoo.sh and Enterprise?
Yes for the Community part: its models and fields exist in every Odoo 19 edition. Enterprise adds other modules (and therefore other fields) that are not listed here.
Why is a field I see in my Odoo missing?
It most likely comes from an Enterprise module, a third-party module, Studio (x_studio_ prefix) or another Odoo version. Turn on developer mode and hover over the field to see its technical name and model.
What is the difference between res.partner and res.users?
res.partner represents any person or company (customer, vendor, contact). res.users represents an account that signs in to Odoo: it is backed by a res.partner through delegation (_inherits) and reuses its name, email and address.
How do I get a model's field list through the API?
Call the model's fields_get method, for example POST /json/2/res.partner/fields_get. It returns the type, label and attributes of every field as they exist in your database, customizations included.
Can I reuse this information?
Yes. Odoo Community code is released under the LGPL v3 license, and model and field names are technical facts. If the tool helps you, a link to this page helps other developers find it.
Cite this tool
Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.
<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo">Odoo model explorer (fields, relations, API)</a>Sources
- Odoo 19 documentation: ORM API
- Odoo 19 documentation: JSON-2 external API
- Odoo 19 documentation: model inheritance
- Odoo 19 documentation: developer mode
- Odoo 19 documentation: Studio fields
- Odoo 19.0 source code (GitHub)
- Official Odoo builds (nightly.odoo.com)
- GNU LGPL v3 license
Updated on September 23, 2026
Have an Odoo project, or want to put your ERP to work with AI? Let's talk
Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.