No segundo capítulo da nossa jornada de aprendizado sobre Django, adentraremos ao fascinante mundo dos modelos, ou “Models”, como são conhecidos na terminologia do Django. Os modelos constituem uma parte fundamental de qualquer aplicação web Django, pois são responsáveis por representar e interagir com os dados armazenados no banco de dados.
O Que São Models no Django?
No contexto do Django, um modelo é uma classe Python que define a estrutura e o comportamento dos dados que serão armazenados no banco de dados. Cada modelo geralmente corresponde a uma tabela no banco de dados relacional, e as instâncias desses modelos são as linhas dessa tabela. Os modelos no Django são criados utilizando a classe Model, que é fornecida pelo framework.
Criando Models no Django
Para criar um modelo no Django, primeiro é necessário definir uma classe que herde da classe django.db.models.Model. Em seguida, dentro dessa classe, são definidos os campos que representam os diferentes atributos dos objetos que serão armazenados no banco de dados. Cada campo é representado por uma instância de uma das diversas classes de campo fornecidas pelo Django, como CharField, IntegerField, DateField, entre outros.
Vejamos um exemplo de como criar um modelo simples no Django:
pythonfrom django.db import models
class Pessoa(models.Model):
nome = models.CharField(max_length=100)
idade = models.IntegerField()
data_nascimento = models.DateField()
Neste exemplo, estamos criando um modelo chamado Pessoa com três campos: nome, idade e data_nascimento, representados pelos campos CharField, IntegerField e DateField, respectivamente.
Migrando o Banco de Dados
Após definir os modelos da nossa aplicação, é necessário realizar as migrações do banco de dados para que as tabelas correspondentes aos modelos sejam criadas ou atualizadas de acordo com as mudanças feitas nos modelos. O Django fornece uma ferramenta chamada manage.py que facilita a execução de tarefas administrativas, incluindo as migrações do banco de dados.
Para criar as migrações, utilizamos o seguinte comando:
python manage.py makemigrations
E para aplicar as migrações e atualizar o banco de dados:
python manage.py migrate
Interagindo com os Models
Uma vez que os modelos tenham sido definidos e as migrações aplicadas, podemos começar a interagir com os dados do banco de dados através dos modelos. O Django fornece uma interface conveniente para realizar operações CRUD (Create, Read, Update, Delete) nos objetos representados pelos modelos.
Criando Novos Objetos
Para criar um novo objeto utilizando um modelo, podemos simplesmente instanciar a classe do modelo e atribuir valores aos seus campos, como no exemplo abaixo:
pythonpessoa = Pessoa(nome='João', idade=30, data_nascimento='1994-05-20')
pessoa.save()
O método save() é utilizado para salvar o objeto no banco de dados.
Recuperando Objetos
Para recuperar objetos do banco de dados, podemos utilizar o manager do modelo, que fornece métodos para realizar consultas. Por exemplo, para recuperar todas as pessoas no banco de dados, podemos utilizar o método all():
pythonpessoas = Pessoa.objects.all()
Também é possível filtrar os objetos com base em determinados critérios utilizando o método filter():
pythonpessoas_maiores_de_idade = Pessoa.objects.filter(idade__gte=18)
Neste exemplo, estamos recuperando todas as pessoas com idade maior ou igual a 18 anos.
Atualizando e Deletando Objetos
Para atualizar um objeto existente no banco de dados, basta modificar os valores dos seus campos e chamar o método save():
pythonpessoa = Pessoa.objects.get(id=1)
pessoa.idade = 31
pessoa.save()
E para deletar um objeto:
pythonpessoa = Pessoa.objects.get(id=1)
pessoa.delete()
Conclusão
Os modelos são componentes essenciais de qualquer aplicação web Django, pois permitem a representação e manipulação dos dados de forma eficiente e estruturada. Ao entender como criar, migrar e interagir com modelos no Django, os desenvolvedores podem construir aplicações web poderosas e escaláveis que atendam às necessidades dos usuários de forma eficaz e confiável.
“Mais Informações”

Claro! Vamos aprofundar ainda mais nosso entendimento sobre o uso de modelos no Django, explorando alguns conceitos adicionais e práticas recomendadas.
Relacionamentos entre Modelos
Uma das características poderosas dos modelos no Django é a capacidade de definir relacionamentos entre eles. Isso permite representar estruturas de dados mais complexas e criar consultas que envolvam múltiplos modelos.
Existem diversos tipos de relacionamentos disponíveis no Django, como:
-
Chave Estrangeira (ForeignKey): Define uma relação de um-para-muitos entre dois modelos, onde um modelo possui uma referência para outro.
-
Chave Primária (OneToOneField): Define uma relação um-para-um entre dois modelos, onde cada instância de um modelo está relacionada a uma única instância do outro modelo.
-
Chaves Muitos-para-Muitos (ManyToManyField): Define uma relação muitos-para-muitos entre dois modelos, permitindo que cada instância de um modelo esteja relacionada a múltiplas instâncias do outro modelo e vice-versa.
Vamos ilustrar esses conceitos com um exemplo:
pythonclass Autor(models.Model):
nome = models.CharField(max_length=100)
class Livro(models.Model):
titulo = models.CharField(max_length=200)
autor = models.ForeignKey(Autor, on_delete=models.CASCADE)
class Editora(models.Model):
nome = models.CharField(max_length=100)
livros = models.ManyToManyField(Livro)
Neste exemplo, temos três modelos: Autor, Livro e Editora. Um livro pertence a um único autor, então usamos uma chave estrangeira (ForeignKey) no modelo Livro para referenciar o autor correspondente. Além disso, uma editora pode publicar vários livros e um livro pode ser publicado por várias editoras, então usamos um relacionamento muitos-para-muitos (ManyToManyField) entre os modelos Livro e Editora.
Personalizando o Comportamento dos Modelos
O Django oferece a flexibilidade de personalizar o comportamento dos modelos através da definição de métodos e atributos especiais. Alguns exemplos de como isso pode ser feito incluem:
-
Métodos: Podemos definir métodos em um modelo para realizar operações específicas relacionadas aos dados representados pelo modelo. Por exemplo, um método
calcula_idade()em um modeloPessoaque retorna a idade atual da pessoa com base na sua data de nascimento. -
Atributos Meta: A classe
Metadentro de um modelo permite definir metadados que controlam o comportamento do modelo. Isso inclui especificar o nome da tabela no banco de dados, a ordem padrão dos resultados de consultas, entre outros.
Validando Dados dos Modelos
Outro aspecto importante dos modelos no Django é a capacidade de validar os dados antes de salvá-los no banco de dados. Isso é especialmente útil para garantir a integridade e consistência dos dados.
Podemos definir métodos especiais dentro do modelo, como clean() e save(), para realizar validações personalizadas. Além disso, o Django fornece uma variedade de validadores embutidos que podem ser aplicados aos campos do modelo para verificar se os dados estão em conformidade com determinados critérios, como valores mínimos e máximos, formatos de data válidos, entre outros.
Conclusão
Os modelos desempenham um papel central no desenvolvimento de aplicações web Django, proporcionando uma maneira conveniente e poderosa de representar e interagir com os dados do aplicativo. Ao compreender os conceitos fundamentais dos modelos e suas funcionalidades avançadas, os desenvolvedores podem criar aplicações robustas e escaláveis que atendam às necessidades dos usuários de forma eficaz e eficiente. O Django oferece uma ampla gama de recursos e ferramentas para facilitar o desenvolvimento com modelos, permitindo a criação de aplicações web de alta qualidade e desempenho.

