Modelos e migrações
Defina e migre o banco de dados
Modelos e migrações é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Modelos do Django
Um modelo do Django é uma classe Python que define a estrutura de uma tabela do banco de dados. Cada atributo é um campo. Os modelos ficam no models.py de um aplicativo.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')Tipos de campo
O Django fornece vários tipos de campo que correspondem a tipos de coluna.
CharFieldpara textos curtos (requermax_length)TextFieldpara textos longosIntegerField,BooleanField,DateTimeField
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
views = models.IntegerField(default=0)
print('Fields map to columns')A chave primária implícita
O Django adiciona automaticamente uma chave primária id com incremento automático a cada modelo, portanto raramente você precisa declarar uma.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')Opções de campo
Os campos aceitam opções como default, null, blank e unique para controlar o comportamento e a validação.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
published = models.BooleanField(default=False)
subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')Datas
DateTimeField(auto_now_add=True) registra quando uma linha é criada pela primeira vez. auto_now=True a atualiza a cada salvamento.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')Relacionamentos
Vincule modelos com ForeignKey para relacionamentos de um para muitos. on_delete informa ao Django o que fazer quando a linha referenciada é excluída.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Post(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')O que são migrações?
Migrações são a forma usada pelo Django para transformar alterações nos modelos em alterações no schema do banco de dados. Elas funcionam como controle de versões do seu banco de dados.
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')Criar migrações
python manage.py makemigrations analisa seus modelos e gera arquivos de migração que descrevem as alterações.
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')Aplicar migrações
python manage.py migrate aplica as migrações pendentes ao banco de dados, criando ou alterando tabelas.
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')Fluxo de trabalho das migrações
O ciclo é: edite models.py, execute makemigrations e depois execute migrate. Repita sempre que seus modelos forem alterados.
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')Consultando modelos
Cada modelo recebe um gerenciador chamado objects para consultas: Post.objects.all(), .filter(), .get() e .create().
# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')Verificação rápida
Avalie seus conhecimentos sobre migrações.
Recapitulação
Você definiu modelos e aplicou as migrações correspondentes.
- Os modelos são classes em
models.pycom campos tipados - O Django adiciona uma chave primária
idautomaticamente ForeignKeyvincula modelos;on_deletedefine o comportamento em cascatamakemigrationse depoismigratesincronizam o banco de dadosModel.objectsconsulta os dados
Perguntas Frequentes
A aula “Modelos e migrações” é grátis?
Sim — o texto completo de “Modelos e migrações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Modelos e migrações”?
Defina e migre o banco de dados Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Modelos e migrações”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Projetos e aplicativos
- Modelos e migrações
- Visualizações e URLs
- O administrador do Django