Modelos Django: Da Definição à Base de Dados com Migrações

Configuração de Aplicações no Django (INSTALLED\_APPS)

Para que o Django reconheça e utilize os modelos definidos em suas aplicações, é essencial registrá-las no arquivo de configurações principal do seu projeto, settings.py. Abra o arquivo djangosite/settings.py e localize a lista INSTALLED_APPS. Adicione a classe de configuração da sua aplicação a esta lista.

Por exemplo, se você tem uma aplicação chamada blog:

INSTALLED_APPS = [
    'blog.apps.BlogConfig',  # Registra a aplicação 'blog'
    'minha_outra_app.apps.MinhaOutraAppConfig', # Exemplo de outra aplicação
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Cada entrada na lista deve ser o caminho para a classe de configuração da aplicação, que geralmente segue o padrão <nome_da_aplicacao>.apps.<NomeDaApp>Config.

Definição de Modelos Django

Os modelos representam a esrtutura dos seus dados no banco de dados. Em Django, cada modelo é uma classe Python que herda de django.db.models.Model. Abra o arquivo <nome_da_sua_app>/models.py (por exemplo, djangosite/blog/models.py) e defina seus modelos. O exemplo a seguir cria um modelo simples para representar uma publicação de blog:

from django.db import models

class Post(models.Model):
    titulo = models.CharField(max_length=255)
    conteudo = models.TextField()
    data_publicacao = models.DateTimeField(auto_now_add=True)
    autor = models.CharField(max_length=100)

    def __str__(self):
        return self.titulo

Neste exemplo, Post herda de models.Model, o que o torna um modelo Django. Os atributos titulo, conteudo, data_publicacao e autor são campos do modelo, mapeando para colunas na tabela do banco de dados.

Geração de Arquivos de Migração (makemigrations)

Após definir ou modificar seus modelos, você precisa criar arquivos de migração. Estes arquivos são scripts Python que descrevem as mudanças no esquema do banco de dados, permitindo que o Django gerencie a evolução do seu banco de dados de forma controlada. Execute o comando no terminal na raiz do seu projeto Django:

python manage.py makemigrations <nome_da_sua_app>

Para a aplicação blog, seria:

python manage.py makemigrations blog

Você verá uma saída similar a esta:

Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model Post

Isso indica que o Django criou um arquivo de migração (0001_initial.py) dentro da pasta blog/migrations/, que contém as instruções para criar a tabela correspondente ao modelo Post no banco de dados.

Se você modificar o modelo Post, por exemplo, alterando o campo autor para permitir valores nulos:

class Post(models.Model):
    # ... outros campos
    autor = models.CharField(max_length=100, null=True, blank=True)

Ao executar python manage.py makemigrations blog novamente, o Django detectará a mudança e criará um novo arquivo de migração (ex: 0002_post_alter_autor.py) para ajustar o campo autor no esquema do banco de dados.

Aplicação de Migrações ao Banco de Dados (migrate)

Os arquivos de migração são apenas as "receitas" para as mudanças no banco de dados. Para aplicar essas mudanças efetivamente no seu banco de dados, você precisa executar o comando migrate. Este comando lê os arquivos de migração e executa as operações SQL correspondentes no banco de dados configurado.

Execute o comando:

python manage.py migrate

Este comando aplicará todas as migrações pandentes para todas as aplicações listadas em INSTALLED_APPS. Após a execução, a estrutura do seu banco de dados estará sincronizada com a definição dos seus modelos.

Tags: Django Python ORM Migrações de Banco de Dados desenvolvimento web

Publicado em 7-23 20:39