Construindo modelos no Django: um guia passo a passo (parte 1)

Building Models in Django: A Step-by-Step Guide (Part 1)

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!

    Published: 3 weeks, 1 day ago.