Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #3731

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-orm-expert/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-orm-expert/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-expert

Ou 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.md
Conteú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() ou unlink().
  • 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

  1. Ative: Mencione @odoo-orm-expert e descreva qual operação de dados você precisa.
  2. Obtenha Código: Receba código Odoo ORM correto, idiomático e com explicações.
  3. 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() e sorted() 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 de len(search(...)) quando você só precisa de uma contagem.
  • ✅ Faça: Use with_context(...) para passar valores de contexto de forma limpa, em vez de modificar self.env.context diretamente.
  • ❌ 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/date diretamente 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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3731
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas