Aula 09 – Criando e ativando models no Django

Aula 09 – Curso de Django

Criando uma primeira aplicação com Django e mysql no windows

Criando e ativando modelos no Django

https://docs.djangoproject.com/pt-br/1.11/intro/tutorial02/

Aplicação Django com mysql

Criando e ativando models no Django

Criando e ativando modelos no django

Agora vamos definir seus modelos, o banco de dados e seus metadados.

Filosofia

Um model é a única e definitiva verdade sobre seus dados, eles contém os campos essenciais e os comportamentos para os dados.

O Django segue o princípio don’t repeat yourself (DRY). O objetivo é definir o modelo de dados em um único local e automaticamente derivar coisas a partir dele.

Isso inclui as migrações, as migrações são inteiramente derivadas de seu arquivo de modelos, são essencialmente a forma que o Django atualiza o esquema de banco de dados para coincidir com seus models.

Então, o que acontece é que o django cria as tabelas e relacionamentos entre as tabelas do banco de dados da sua aplicação sem que você precise executar comandos em SQL e relaciona aos modelos da sua aplicação.

Nessa simples aplicação de enquete, nós iremos criar dois modelos: Question e Choice. Uma Question tem uma pergunta e uma data de publicação. Uma Choice tem dois campos: o texto da escolha e um totalizador de votos. Cada Choice é associada a uma Question. Ou seja, a Choice tem a chave estrangeira de Question.

Vamos representar com classes Python. Edite o arquivo polls/models.py, ele deverá ficar assim:

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

Agora edite o arquivo mysite/settings.py adicionando a configuração da app polls:


Agora edite o arquivo mysite/settings.py adicionando a configuração da app polls:
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Agora a migration:

python manage.py makemigrations polls
Saída deverá ser algo parecido com isso:

Migrations for 'polls':
  polls/migrations/0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice

Se quiser ver detalhes de como serão criadas as tabelas Choice e Question no banco de dados quando rodar o migrate, execute o comando abaixo:

python manage.py sqlmigrate polls 0001

O makemigrations não toca no banco de dados, ele apenas guarda em um arquivo .py, nesse caso o:

0001_initial.py

Todos os comandos sql que serão executados quando for rodado o comando:

python manage.py migrate

Que de fato efetivamente criará as tabelas Choice e Question no db_mysite.

Resumindo, o primeiro migrate gerou as tabelas das apps registradas no APP_INSTALLED dentro do settings.py

Depois nós criamos os modelos Question e Choice e então foi rodado o makemigrations que guardou em 0001_initial.py os comandos sql para poder gerar as tabelas Choice e Question no banco de dados, quando novamente for rodado o migrate.

Para baixar o código como está até agora, acesse o meu github no link abaixo:
https://github.com/toticavalcanti/django_course/tree/create_models

Obrigado

Até a próxima

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *