Migrations
Evolua o esquema com segurança usando migrações do Django.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
# terminal
python manage.py makemigrations
python manage.py migrateQuando usar:
- Alterações de modelo precisam de migrações
- Histórico de esquema compartilhado pela equipe
- Planejamento de implantação com zero tempo de inatividade
Exemplo de Trabalho
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("hello", "0001_initial")]
operations = [
migrations.AddField(model_name="book", name="isbn", field=models.CharField(max_length=13, null=True)),
]O que isto demonstra:
- Autogerar a partir de diferenças de modelo
- Revisar migrações em PRs
- Migrações de dados para preenchimento retroativo
Mergulho Profundo
Como Funciona
- O Django registra as migrações aplicadas em
django_migrations. - Compacte quando as cadeias se tornarem difíceis de gerenciar.
- Teste migrações em dados semelhantes à produção.
Armadilhas
- Validação de limite ignorada - Dados inválidos chegam às camadas de persistência. Correção: Valide com Pydantic ou formulários do framework na borda.
- Vazamento de rastros de pilha - Clientes veem erros internos. Correção: Mapeie exceções para respostas HTTP estáveis.
- Bloqueio de loops de eventos assíncronos - Workers param sob carga concorrente. Correção: Use drivers assíncronos ou wrappers de threadpool.
- Segredos em controle de versão - Credenciais vazam pelo histórico do git. Correção: Carregue segredos de variáveis de ambiente ou de um cofre em tempo de execução.
- Falta de observabilidade - Incidentes são difíceis de depurar. Correção: Adicione logs estruturados, métricas e IDs de solicitação.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Framework alternativo neste cookbook | Padrão da equipe ou monólito existente | API Greenfield com restrições diferentes |
| BaaS Gerenciado | MVP apenas CRUD | Autenticação personalizada, fluxos de trabalho ou necessidades de conformidade |
| gRPC | RPC interno de alto desempenho | Clientes HTTP públicos e acesso ao navegador |
FAQs
Quando devo adotar migrações do Django?
Use quando os padrões e trade-offs nesta página corresponderem à sua API ou limite de dados.
Qual é o principal erro de produção com migrações do Django?
Ignorar validação, timeouts ou contratos de erro explícitos na borda HTTP.
Como testo migrações do Django?
Use o cliente de teste do framework, substitua dependências e afirme o status mais a forma JSON.
O Django migrations funciona com Python 3.14?
Sim - os exemplos visam Python 3.14 com versões de framework fixadas do rodapé da pilha.
Como Django migrations se relaciona com Pydantic 2?
Valide e serialize nas bordas; mantenha os serviços funcionando com objetos de domínio tipados.
Sincronizar ou assíncrono?
Prefira rotas assíncronas quando I/O domina; mantenha o trabalho da CPU pequeno ou descarregue para workers.
Onde a lógica de negócios deve residir?
Handlers finos; serviços possuem regras; repositórios possuem consultas.
Como documento APIs?
Publique documentação OpenAPI ou de esquema que corresponda aos modelos de resposta no código.
O que devo ler em seguida?
Siga os links Relacionados para a próxima camada de profundidade nesta seção.
Como me mantenho seguro?
Autentique chamadores, autorize por recurso, limite a taxa e nunca registre segredos.
Primeiro passo de desempenho?
Meça a latência do DB e upstream antes de trocar de framework.
Relacionado
- Django Basics - Projetos e views
- Models & the ORM - Camada de dados
- Django REST Framework - APIs JSON
- Scaling & Deployment - Produção
Versões da pilha: Esta página foi escrita para Python 3.14.0 (3.14 estável, 3.13 em manutenção), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.