Prévia do material em texto
<p>Desafio</p><p>A camada de modelos é uma das três camadas essenciais na arquitetura de soluções Web desenvolvidas em Django.</p><p>Nessa camada são descritas as características e os comportamentos das entidades que compõem as aplicações, bem</p><p>como a lógica de acesso aos dados do sistema.</p><p>Já um modelo é equivalente a uma tabela no banco de dados. É uma classe que representa um objeto que herda de</p><p>django.db.models.Model, em que cada atributo é utilizado para criar um campo da tabela e do formulário, quando gerado</p><p>de forma automática.</p><p>Imagine que você trabalha em uma produtora que desenvolve jogos eletrônicos. A equipe está trabalhando em</p><p>um novo projeto, e você se torna o responsável por criar um modelo de personagem de um jogo RPG.</p><p>Esse modelo deve ser utilizado para a criação automática de um formulário que contenha a opção de nome do</p><p>personagem, um campo de seleção para o usuário, definição de qual é o atributo primário, com as opções Inteligência,</p><p>Agilidade e Força; além de três campos numéricos inteiros, um para a propriedade Inteligência, outro para Agilidade e o</p><p>último para Força.</p><p>RESPOSTA:</p><p>Para criar um modelo de personagem de um jogo RPG em Django, podemos definir uma classe que</p><p>herda de `django.db.models.Model`. Esse modelo vai incluir os atributos mencionados: nome do</p><p>personagem, seleção de atributo primário e os três campos numéricos para as propriedades</p><p>UniCarioca | Centro Universitário Carioca Unidade Virtual</p><p>Disciplina: Programação Web Back End 2024.2</p><p>Aluna: Érika Laiane Azevedo dos Santos 2° Período</p><p>Curso: Análise e Desenvolvimento de Sistemas EAD</p><p>Matrícula: 2024100497</p><p>"Inteligência", "Agilidade" e "Força". Além disso, Django poderia gerar automaticamente um</p><p>formulário baseado nesse modelo.</p><p>Podemos implementar esse modelo da seguinte forma:</p><p>```python</p><p>from django.db import models</p><p># Definição do modelo de Personagem</p><p>class Personagem(models.Model):</p><p># Campo de nome do personagem</p><p>nome = models.CharField(max_length=100)</p><p># Definição das opções de atributo primário</p><p>ATRIBUTO_PRIMARIO_CHOICES = [</p><p>('INT', 'Inteligência'),</p><p>('AGI', 'Agilidade'),</p><p>('FOR', 'Força'),</p><p>]</p><p># Campo de seleção para o atributo primário</p><p>atributo_primario = models.CharField(</p><p>max_length=3,</p><p>choices=ATRIBUTO_PRIMARIO_CHOICES,</p><p>default='INT'</p><p>)</p><p># Campos numéricos inteiros para os atributos</p><p>inteligencia = models.IntegerField(default=0)</p><p>agilidade = models.IntegerField(default=0)</p><p>forca = models.IntegerField(default=0)</p><p># Método para exibir o nome do personagem</p><p>def __str__(self):</p><p>return self.nome</p><p>```</p><p>● Explicação:</p><p>1. Campo `nome`: `models.CharField` é utilizado para armazenar o nome do personagem, com um</p><p>limite máximo de 100 caracteres.</p><p>2.Campo `atributo_primario`: Utilizei o `models.CharField` com a opção `choices`, que oferece um</p><p>menu suspenso com as três opções (Inteligência, Agilidade e Força).</p><p>3. Campos numéricos: `models.IntegerField` foi utilizado para armazenar os valores inteiros dos</p><p>atributos "Inteligência", "Agilidade" e "Força". Esses valores são inicializados como 0.</p><p>● Geração do Formulário:</p><p>Django gera automaticamente um formulário a partir desse modelo se você utilizar `ModelForm`:</p><p>```python</p><p>from django import forms</p><p>from .models import Personagem</p><p># Formulário automático baseado no modelo Personagem</p><p>class PersonagemForm(forms.ModelForm):</p><p>class Meta:</p><p>model = Personagem</p><p>fields = ['nome', 'atributo_primario', 'inteligencia', 'agilidade', 'forca']</p><p>```</p><p>Esse formulário seria utilizado na nossa aplicação para que o usuário possa criar novos</p><p>personagens, selecionando o nome, o atributo primário, e os valores de Inteligência, Agilidade e</p><p>Força.</p>