odoo-orm-expert
Ajuda seu agente a interagir com o banco de dados do Odoo. Ele permite buscar, criar e atualizar informações de forma eficiente.
O que ela faz
Esta ferramenta ajuda você a usar o Odoo ORM, que é como o Odoo conversa com o banco de dados. Ela ensina a buscar, criar, modificar e apagar dados, além de otimizar o desempenho.
Quando usar
- ✓Quando precisar buscar ou alterar informações no Odoo.
- ✓Ao criar filtros complexos para ver dados.
- ✓Para melhorar a velocidade de operações no Odoo.
Exemplo do que pedir para a IA
“Me mostre como buscar todos os clientes do Brasil que fizeram pedidos este ano.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você pede para a IA, mencionando o nome da ferramenta. Ela te dá o código correto para o Odoo e explica como ele funciona.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill odoo-orm-expertOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/odoo-orm-expert/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Odoo ORM Expert
Visão Geral
Esta habilidade ensina o Object Relational Mapper (ORM) do Odoo em profundidade. Ela cobre leitura/escrita de registros, construção de filtros de domínio, trabalho com campos relacionais e como evitar armadilhas comuns de desempenho, como consultas N+1.
Quando Usar Esta Habilidade
- Ao escrever chamadas
search(),browse(),create(),write()ouunlink(). - Ao construir filtros de domínio complexos para visualizações ou ações de servidor.
- Ao implementar campos computados, armazenados e relacionados.
- Ao depurar consultas lentas ou otimizar operações em massa.
Como Funciona
- Ative: Mencione
@odoo-orm-experte descreva qual operação de dados você precisa. - Obtenha Código: Receba código Odoo ORM correto, idiomático e com explicações.
- Otimize: Peça uma revisão de desempenho do seu código ORM existente.
Exemplos
Exemplo 1: Pesquisa com Filtros de Domínio
# Find all confirmed sale orders for a specific customer, created this year
import datetime
start_of_year = datetime.date.today().replace(month=1, day=1).strftime('%Y-%m-%d')
orders = self.env['sale.order'].search([
('partner_id', '=', partner_id),
('state', '=', 'sale'),
('date_order', '>=', start_of_year),
], order='date_order desc', limit=50)
# Note: pass dates as 'YYYY-MM-DD' strings in domains,
# NOT as fields.Date objects — the ORM serializes them correctly.
Exemplo 2: Campo Computado
total_order_count = fields.Integer(
string='Total Orders',
compute='_compute_total_order_count',
store=True
)
@api.depends('sale_order_ids')
def _compute_total_order_count(self):
for record in self:
record.total_order_count = len(record.sale_order_ids)
Exemplo 3: Escrita em Massa Segura (evita N+1)
# Batch writes reduce repeated calls, but can trigger additional compute/tracking queries
partners = self.env['res.partner'].browse(approved_partner_ids).exists() # Explicit scoped IDs
partners.write({'country_id': self.env.ref('base.us').id})
# ❌ BAD: Triggers a separate query per record
for partner in partners:
partner.country_id = self.env.ref('base.us').id
Melhores Práticas
- ✅ Faça: Use
mapped(),filtered()esorted()em recordsets em vez de loops Python. - ✅ Faça: Use
sudo()com moderação e apenas quando entender as implicações de segurança. - ✅ Faça: Prefira
search_count()em vez delen(search(...))quando você só precisa de uma contagem. - ✅ Faça: Use
with_context(...)para passar valores de contexto de forma limpa, em vez de modificarself.env.contextdiretamente. - ❌ Não Faça: Chame
search()dentro de um loop — este é o principal causador de lentidão no Odoo. - ❌ Não Faça: Use SQL bruto, a menos que seja absolutamente necessário; use o ORM para todas as operações padrão.
- ❌ Não Faça: Passe objetos Python
datetime/datediretamente em tuplas de domínio — sempre converta-os para string como'YYYY-MM-DD'.
Limitações
- Não cobre padrões de
cr.execute()SQL bruto em profundidade — use a habilidade de ajuste de desempenho do Odoo para otimização em nível de SQL. - Campos computados armazenados podem causar sobrecarga significativa de escrita em escala; esta habilidade não cobre estratégias de particionamento.
- Não cobre modelos transitórios (
models.TransientModel) ou padrões de wizard. - O comportamento do ORM pode diferir ligeiramente entre Odoo SaaS e On-Premise devido a substituições de configuração.
Exemplos são fragmentos de modelo-método que requerem importações, definições de registro e escopo autorizado. Não infira que a ausência de dados de país significa EUA; escreva apenas valores confirmados em registros selecionados. sudo() ignora regras de acesso e requer um limite justificado. Operações em lote não garantem uma única consulta SQL, e mapeados/filtrados podem carregar grandes conjuntos de registros; analise as contagens reais de consultas e teste o isolamento de regras de registro/multicompanhia.
Perguntas frequentes
O que é Odoo ORM?
É a forma como o Odoo organiza e acessa os dados no banco de dados, como um tradutor entre o que você pede e o que o banco entende.
O que são 'domain filters'?
São regras que você define para filtrar os dados que quer ver, como 'mostrar apenas clientes ativos'.
Por que otimizar o desempenho?
Para que o Odoo rode mais rápido, especialmente quando você tem muitos dados ou muitos usuários.
Detalhes
Descrição original do autor
Master Odoo ORM patterns: search, browse, create, write, domain filters, computed fields, and performance-safe query techniques.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3731
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC