Free tool · Odoo 19

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.

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.

  1. Type a technical name (res.partner, stock.picking) or a word from the label (invoice, contact, leave). Search ignores case and accents.
  2. Open the model page: identity (SQL table, origin module, modules that extend it), then the full field list, filterable by name or type.
  3. 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.

TypePython classSQL tableIn Odoo 19 Community
Persistentmodels.ModelYes, data is kept546 models
Abstract (mixin)models.AbstractModelNo, used to share fields142 models
Transient (wizard)models.TransientModelYes, purged regularly200 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.

TypeContentExample
char, text, htmlShort, long or formatted textname, comment
integer, float, monetaryWhole number, decimal or currency amountamount_total
boolean, date, datetimeCheckbox, date, date and timeactive, date_order
selectionOne value from a closed liststate (draft, sale, cancel)
many2oneLink to ONE record of another modelpartner_id → res.partner
one2manyRecords pointing back to this oneorder_line → sale.order.line
many2manyMultiple links in both directionstag_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>

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.