Pular para o conteúdo

ir.model: O Registo de Models do Odoo Explicado

Guia definitivo ao modelo de metadados que descreve cada entidade do Odoo — como estão organizadas, quais atributos definem cada modelo e por que isso importa para desenvolvedores e administradores
11 de março de 2026 por
ir.model: O Registo de Models do Odoo Explicado
Dasolo
| Nenhum comentário ainda

Introdução


No Odoo, os modelos são a forma como os dados são organizados e guardados na base de dados. Tudo o que manipula — encomendas, faturas, contactos, inventário — existe dentro de um modelo que define campos e relações.


Compreender os modelos do Odoo é crucial tanto para consultores funcionais como para desenvolvedores. É sobre estes modelos que se apoia toda a arquitetura dos dados: campos, ligações entre tabelas e regras de negócio são definidos aí.


Mas onde o Odoo mantém a informação sobre cada um desses modelos? É aqui que entra o ir.model: um registo central que guarda metadados sobre todos os modelos do sistema. Ao criar módulos personalizados, inspecionar a API ou depurar o sistema, provavelmente vai acabar por trabalhar com ir.model.

O que é o ir.model


O ir.model funciona como o catálogo de modelos do Odoo — existe uma entrada por cada modelo registado. Quando define um novo modelo em Python ou cria um através do Odoo Studio, é criado ou actualizado um registo em ir.model com essa referência.


Este registo faz parte do núcleo do Odoo, sendo gerido pelo módulo base. Quer o modelo seja normal, abstracto ou transitório, existe uma entrada correspondente em ir.model sempre que houver uma representação de base de dados associada.


O ir.model é complementado por ir.model.fields, que contém a descrição de cada campo de cada modelo. Em conjunto, estes dois elementos permitem que o Odoo «olhe para dentro» dos próprios modelos e suporte ferramentas dinâmicas de introspecção.


Os desenvolvedores recorrem ao ir.model quando precisam de obter a lista de modelos disponíveis, analisar cadeias de herança ou construir utilitários genéricos que funcionem com qualquer modelo. O Odoo expõe este registo através da API (XML-RPC/JSON-RPC) para fins de integração e descoberta.

Campos principais do modelo


A seguir estão os campos mais relevantes do ir.model. Conhecê-los facilita a navegação pelo registo de modelos e ajuda na integração e depuração.


1. name

Tipo: Char. Descrição legível do modelo, utilizada na interface técnica e nas ferramentas de desenvolvimento. É transponível e serve como rótulo quando se procura um modelo no sistema.


2. model

Tipo: Char. Nome técnico do modelo — a string usada em código Python, como res.partner ou sale.order. É obrigatório e indexado para pesquisas rápidas.


3. info

Tipo: Text. Campo livre para notas ou documentação interna sobre o modelo. Muitas entradas não têm texto aqui, mas serve para explicações adicionais quando necessário.


4. state

Tipo: Selection. Indica se o modelo vem do código base (base) ou foi criado manualmente (manual) — por exemplo, via Studio. Os modelos base tendem a ser protegidos, enquanto os manuais são mais flexíveis.


5. transient

Tipo: Boolean. Quando verdadeiro, trata-se de um modelo transitório: dados temporários, usados por assistentes e que o Odoo elimina automaticamente ao fim de algum tempo.


6. field_id

Tipo: One2many (ir.model.fields). Lista dos campos definidos no modelo. Cada registo em ir.model.fields descreve um campo: nome, tipo e atributos.


7. access_ids

Tipo: One2many (ir.model.access). Regras de acesso associadas ao modelo. Define que grupos podem criar, ler, escrever ou apagar registos — a base da segurança de acesso.


8. rule_ids

Tipo: One2many (ir.rule). Regras de registo que limitam quais os registos visíveis por cada utilizador — útil para aplicar segurança ao nível das linhas.


9. inherited_model_ids

Tipo: Many2many (ir.model). Refere-se aos modelos pais quando existe herança entre modelos. Permite acompanhar a cadeia de herança entre modelos.


10. modules

Tipo: Char. Campo calculado que lista os módulos onde o modelo é definido ou estendido. Ajuda a identificar dependências e origem das alterações.


11. sort

Tipo: Integer. Ordem de apresentação nos menus técnicos. Valores mais baixos aparecem primeiro, usado para organizar a lista de modelos.


12. constrains

Tipo: Text. Definições de constraints em Python (@api.constrains). Guarda o código de validação customizada a nível de modelo.


13. post_constrains

Tipo: Text. Validações executadas após as constraints normais. Utilizado em cenários de validação mais sofisticados.


14. sql_constraints

Tipo: Text. Definições de constraints SQL — por exemplo índices únicos — que asseguram integridade ao nível da base de dados.


15. view_ids

Tipo: One2many (ir.ui.view). Campo calculado com as vistas associadas ao modelo. Útil para gerir e inspecionar a apresentação dos dados.


16. record_count

Tipo: Integer. Número de registos existentes nesse modelo. Campo calculado que fornece uma visão rápida da quantidade de dados.


17. display_name

Tipo: Char. Representação do nome para exibição em listas e relações — geralmente uma combinação do nome legível e do identificador técnico.


18. create_date

Tipo: Datetime. Data e hora de criação do registo, mantida automaticamente pelo Odoo.


19. create_uid

Tipo: Many2one (res.users). Utilizador que criou o registo, útil para auditoria e rastreio.


20. write_date

Tipo: Datetime. Data e hora da última modificação, atualizada automaticamente.


21. write_uid

Tipo: Many2one (res.users). Último utilizador que modificou o registo — também para fins de auditoria.


22. active

Tipo: Boolean. Flag de arquivamento (soft delete). Quando falso, o registo fica inactivo sem ser eliminado da base de dados.


23. id

Tipo: Integer. Identificador único do registo na base de dados — usado em chamadas de API e referências internas.


24. restrict_functionality

Tipo: Boolean. Indica funcionalidades limitadas em determinadas edições do Odoo (ex.: diferenciação entre Community e Enterprise).


25. is_mail_thread

Tipo: Boolean. Indica se o modelo suporta chatter (mensagens, seguidores). Modelos com esta flag permitem discussão e histórico de mensagens.


26. is_mail_activity

Tipo: Boolean. Indica suporte a actividades (planner). Modelos com esta opção permitem agendar e acompanhar ações futuras.

Como este modelo entra nos fluxos de trabalho


1. Configuração técnica e navegação

Os administradores usam o menu de Configurações Técnicas para explorar os modelos. É o ir.model que determina o que aparece nessa lista, mostrando nome, descrição e número de campos.


2. Gestão de permissões

Ao configurar segurança, atribui-se permissões a grupos. Os registos em access_ids definem que grupos podem realizar operações CRUD para cada modelo.


3. Personalizações com Odoo Studio

Modelos criados pelo Odoo Studio geram registos em ir.model com state = manual. As colunas correspondentes em field_id são preenchidas com os campos adicionados pelo utilizador.


4. Descoberta via API e integrações

Sistemas externos podem descobrir modelos e estrutura consultando ir.model através da API XML-RPC/JSON-RPC, o que evita hardcoding e facilita integrações robustas.


5. Desenvolvimento e depuração de módulos

Os programadores consultam ir.model para entender heranças (inherited_model_ids) e inspeccionar field_id para ver todos os campos disponíveis num modelo durante o desenvolvimento.

Como os programadores estendem este registo


Os desenvolvedores raramente alteram diretamente o ir.model. Normalmente interagem com ele indiretamente ao definir novos modelos; o registo é actualizado automaticamente quando um módulo é carregado.


Herança de modelos

Ao usar _inherit = 'res.partner' num ficheiro Python, o Odoo actualiza o registo correspondente em ir.model. A ligação entre filho e pai fica refletida em inherited_model_ids, permitindo que a cadeia de herança seja seguida no registo.


Adicionar campos

Quando adiciona novos campos a um modelo, o Odoo cria registos em ir.model.fields que apontam para o ir.model através de model_id. O registo ir.model serve de índice, não de contentor directo dos valores dos campos.


Extensões em Python

Não é prática comum sobrescrever métodos de ir.model. Em vez disso, estende-se os modelos descritos pelo registo. As customizações de comportamento fazem-se nos modelos de aplicação, não no próprio registo do catálogo.


Odoo Studio

O Odoo Studio gera automaticamente ir.model e ir.model.fields quando se criam modelos personalizados, sem necessidade de código. A flag transient distingue modelos temporários; modelos abstractos não geram registos ir.model porque não têm tabela física.

Boas práticas


  • Para integrações, consulte ir.model para fazer descoberta de modelos em tempo de execução em vez de codificar nomes estáticos.
  • Use o campo model para procurar metadados: é indexado e ideal para pesquisas quando precisa do registo de um modelo específico.
  • Antes de estender um modelo, verifique inherited_model_ids para compreender completamente a cadeia de herança e evitar conflitos com campos ou métodos existentes.
  • Leia ir.model através da API (XML-RPC/JSON-RPC) quando construir integrações. Evite alterar estes registos diretamente, salvo se estiver a criar ferramentas como o Studio.
  • Para análise ao nível de campos, utilize ir.model.fields. A relação field_id devolve toda a informação sobre os campos de um modelo.

Erros comuns


  • Modificar ir.model diretamente é arriscado: o registo é gerido pelo Odoo e alterações manuais podem corromper o sistema ou ser sobrescritas em upgrades.
  • Não confunda ir.model com a classe Python do modelo: ir.model é um registo na base de dados que descreve o modelo — a classe Python implementa a lógica e o comportamento em runtime.
  • Nem todos os modelos têm registos ir.model: classes abstractas não criam tabela nem entrada no registo, porque não são instanciadas diretamente na base de dados.
  • Lembre-se de que modelos transitórios são temporários: o Odoo limpa os seus dados. Não os utilize para armazenar informação persistente.
  • Ao consultar ir.model, faça pesquisas filtradas: uma instância típica tem centenas de modelos, por isso é habitual usar domínios para limitar os resultados.

Conclusão


O ir.model é, em suma, o inventário dos modelos do Odoo. Guardando metadados sobre cada modelo e, em conjunto com ir.model.fields, forma a base para explorar e gerir a arquitectura de dados do sistema.


Quer seja um consultor a investigar as Configurações Técnicas ou um desenvolvedor a criar integrações, dominar o ir.model ajuda a evitar erros e a poupar tempo em tarefas de configuração e debug.

Precisa de ajuda com a sua implementação Odoo?


A Dasolo ajuda empresas a implementar, personalizar e optimizar o Odoo. Somos especialistas em integrações de API e desenvolvimento Odoo, com experiência aprofundada na arquitectura de dados e em modelos como o ir.model.


Se precisa de apoio na sua implementação Odoo, desenvolvimento de módulos ou integrações, podemos ajudar. Agende uma demonstração para falarmos do seu projecto.

ir.model: O Registo de Models do Odoo Explicado
Dasolo 11 de março de 2026
Compartilhar esta publicação
Iniciar sessão para deixar um comentário