Table of Contents
Quando comecei a aprender Django, lembro-me de me sentir sobrecarregado pelo grande número de conceitos — modelos, visualizações, templates — era como tentar beber de uma mangueira de incêndio. Mas assim que compreendi como os modelos funcionam, o resto da estrutura começou a se encaixar. Os modelos são a base de qualquer projeto Django e, neste tutorial, quero orientá-lo na construção deles, começando do zero. Abordaremos tudo, desde a configuração do seu ambiente até a criação de um modelo Product
funcional. No final, você terá uma compreensão sólida de como os modelos funcionam e como usá-los efetivamente.
Não vamos nos aprofundar no assunto, vamos passo a passo, para que nenhum detalhe fique sem explicação.
Configurando Django: Do Zero
O primeiro passo em qualquer projeto Django é garantir que seu ambiente esteja configurado corretamente. Antes mesmo de pensarmos em modelos, precisamos preparar nosso espaço de trabalho. No Ubuntu, isso começa com a garantia de que você tem o Python instalado, junto com seu gerenciador de pacotes, pip. Você pode instalar ambos com um comando simples:
sudo apt update && sudo apt install python3 python3-pip
Depois que isso for feito, confirme a instalação executando python3 --version e pip3 --version , que deve exibir as versões instaladas do Python e do pip. Essas ferramentas são essenciais para tudo o que faremos, então vale a pena verificar novamente se estão funcionando.
Sempre que inicio um novo projeto Django, sempre configuro um ambiente virtual primeiro. Este é um ambiente dedicado para as dependências do seu projeto, mantendo-as isoladas da instalação do Python em todo o sistema. Pense nisso como uma bolha protetora para seu projeto. Para criar uma, você precisará do módulo venv
, que é instalado com o Python por padrão. Navegue até a pasta do seu projeto e crie um ambiente virtual:
python3 -m venv env
Ative-o executando:
source env/bin/activate
Você notará que o prompt do terminal muda para incluir (env)
, informando que o ambiente virtual está ativo.
Com nosso ambiente configurado, estamos prontos para instalar o Django em si. Usando pip, instale-o com:
pip install django
Você pode verificar a versão para garantir que ela foi instalada corretamente:
python -m django --version
Isso garante que tudo esteja atualizado e pronto para uso. Agora vem a parte emocionante — iniciar um novo projeto Django. Para este tutorial, estamos criando um projeto chamado inventory_system
. Execute:
django-admin startproject inventory_system .
O ponto no final é crítico — ele diz ao Django para criar o projeto no diretório atual em vez de uma pasta aninhada. Isso mantém as coisas organizadas e gerenciáveis.
Se você der uma olhada, o Django terá criado vários arquivos e pastas para você. Há o arquivo manage.py
, que você usará para interagir com o projeto, e uma subpasta nomeada após seu projeto que contém arquivos de configuração como settings.py
e urls.py
. Neste ponto, você já pode executar o servidor de desenvolvimento:
python manage.py runserver
Abra um navegador, vá para http://127.0.0.1:8000 e você verá a página de boas-vindas do Django. É sempre um momento satisfatório porque significa que tudo está funcionando conforme o esperado.
Criando um aplicativo Django para produtos
Um aplicativo Django é uma parte modular do seu projeto, geralmente representando um recurso específico. Para este tutorial, criaremos um aplicativo para lidar com produtos e avaliações. Para gerar a estrutura do aplicativo, execute:
python manage.py startapp products
Depois que o aplicativo for criado, registre-o no seu projeto. Abra settings.py
e adicione 'products' ,
à lista INSTALLED_APPS
:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'products', # New app ]
Esta etapa diz ao Django para incluir o aplicativo no projeto. Com nosso aplicativo instalado, estamos prontos para começar a construir modelos.
Apresentando o modelo de produto
Modelos em Django são classes Python queDefina a estrutura das tabelas do seu banco de dados. Cada atributo no modelo se torna uma coluna, e o Django cuida de todo o trabalho pesado de converter essas classes Python em instruções SQL reais. Para nosso exemplo, começaremos com um modelo Product
. Este modelo terá campos para atributos comuns, como nome do produto, descrição, preço e estoque. Além disso, incluiremos um campo slug
para criar URLs amigáveis para SEO, um BooleanField
para marcar se o produto está ativo e registros de data e hora para quando o produto foi criado e atualizado.
Aqui está o código para o modelo do produto:
from django.db import models from django.utils.text import slugify from django.urls import reverse class Product(models.Model): name = models.CharField(max_length=200) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField() is_active = models.BooleanField(default=True) slug = models.SlugField(unique=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) release_date = models.DateField(null=True, blank=True) image = models.ImageField(upload_to='product_images/', null=True, blank=True) def __str__(self): return self.name def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super().save(*args, **kwargs) def get_absolute_url(self): return reverse('product_detail', kwargs={'slug': self.slug})
Quebrando tudo
O modelo Product
usa vários tipos de campo para representar diferentes atributos de um produto. Por exemplo, o campo name
é um CharField
com um comprimento máximo de 200 caracteres, enquanto o campo description
é um TextField
para texto mais longo. O campo price
é um DecimalField
, que nos permite armazenar valores monetários precisos especificando o número total de dígitos ( max_digits=10
) e o número de casas decimais ( decimal_places=2
). Da mesma forma, stock
é um IntegerField
para representar contagens de inventário, e is_active
é um BooleanField
para indicar se o produto está disponível no momento.
O campo slug
é particularmente interessante. É um SlugField
, que é usado para armazenar texto amigável a URL, geralmente derivado do nome do produto. Para garantir que cada produto tenha um slug exclusivo, definimos unique=True
. Ao substituir o método save
, usamos a função slugify
do Django para gerar automaticamente um slug quando o produto é salvo pela primeira vez.
Para rastrear timestamps, adicionamos os campos created_at
e updated_at
. O campo created_at
usa auto_now_add=True
para definir o timestamp quando o registro é criado pela primeira vez, enquanto updated_at
usa auto_now=True
para atualizar o timestamp sempre que o registro é modificado. Há também um campo image
para armazenar imagens de produtos. Isso requer a biblioteca Pillow, que você pode instalar com pip install pillow .
Dois métodos adicionais melhoram a usabilidade deste modelo. O método __str__
define como o produto aparecerá no admin do Django ou quando impresso. Neste caso, ele simplesmente retorna o nome do produto. O método get_absolute_url
gera uma URL para o produto, usando seu slug. Isso mantém a lógica da URL centralizada e evita caminhos de hardcoding em outras partes do código.
Fazendo Migrações
Para aplicar esse modelo ao banco de dados, precisamos criar e executar migrações. É assim que o Django traduz nosso código Python em alterações de esquema de banco de dados. Primeiro, crie as migrações com:
python manage.py makemigrations
Em seguida, aplique-os ao banco de dados com:
python manage.py migrate
Se tudo funcionou, o Django terá criado uma tabela products_product
no seu banco de dados. Seu modelo Product
agora está ativo e pronto para uso!
Concluindo a Parte 1
Até agora, nós...ve configurei o Django, criei um projeto e um aplicativo e construí um modelo Product
funcional. Na próxima parte, criaremos um modelo Review
, estabeleceremos relacionamentos entre modelos e nos aprofundaremos na consulta do banco de dados com o ORM do Django. Se você tem acompanhado, reserve um tempo para explorar seu novo modelo — execute o servidor de desenvolvimento, experimente o administrador do Django e veja-o em ação. Fique ligado na Parte 2!