Tutorial do AfroPython
  • Sobre
  • Introdução
  • Codenvy
    • O que é o Codenvy
    • Crie uma conta
    • Complete o cadastro
    • Dashboard
  • Como funciona a internet?
  • Introdução a linha de comando
    • O que é a linha de comando?
    • Conhecendo a linha de comando
    • Seu primeiro comando (YAY!)
    • O básico
      • Pasta atual
      • Criando uma pasta
      • Listando arquivos e pastas
      • Entrando nas pastas
      • Exercite-se!
      • Limpando
      • Resumo
  • Editor de Código
    • Porque precisamos de um editor de código?
  • Introdução ao Python
    • Strings
    • Erros
    • Variáveis
    • A função print
    • Listas
    • Dicionários
    • Resumo até agora
    • Fazendo comparações
    • Booleanos
    • Salve o código!
      • if...elif...else
      • E se não?
      • Resumo
    • Suas próprias funções
    • Laços de repetição
    • Resumo
  • Django, o que é?
    • Por que você precisa de um framework?
    • O que acontece quando alguém solicita um site do seu servidor?
  • Seu primeiro projeto Django
    • Configurando
    • Instalando o banco de dados
  • Modelos do Django
    • Objetos
    • Modelo do Django
      • Criando uma aplicação
      • Criando um modelo
      • Criando tabelas
  • Administração
  • URLs
    • O que é uma URL?
    • Como funcionam as URLs no Django?
    • Sua primeira URL Django
    • blog.urls
  • Views
    • blog/views.py
  • Introdução a HTML
    • Seu primeiro template!
    • Head & Body
    • Customize seu template
  • QuerySet e ORM do Django
    • O que é um QuerySet?
    • O shell do Django
      • Todos os objetos
      • Criando um objeto
      • Adicionando objetos
      • Filtrar objetos
      • Ordenando objetos
  • Dados dinâmicos no template
    • QuerySet
  • Templates
    • O que são tags de template
    • Modelo de lista de post de exibição
  • CSS - Deixe mais bonito!
    • Vamos usar o Bootstrap!
    • Arquivos estáticos no Django
    • Seu primeiro arquivo CSS!
  • Estendendo templates
  • Amplie sua aplicação
  • Formulários
  • URLs e Views
  • Template
  • Salvando o formulário
  • Validação de formulários
  • Editando o formulário
  • Segurança
  • O que vem depois!
Powered by GitBook
On this page

Was this helpful?

  1. Modelos do Django
  2. Modelo do Django

Criando um modelo

No arquivo blog/models.py definimos todos os objetos chamados Modelos - este é um lugar em que vamos definir nossa postagem do blog.

Vamos abrir blog/models.py, remova tudo dele e escreva o código como este:

from django.db import models
from django.utils import timezone
from django.contrib.auth import get_user_model

class Post(models.Model):
    author = models.ForeignKey(
        get_user_model(), on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
        default=timezone.now)
    published_date = models.DateTimeField(
        blank=True, null=True)

    def publish(self):
        self.published_date=timezone.now()
        self.save()

    def __str__(self):
        return self.title

Certifique-se de ter usado dois caracteres (_) em cada lado do str. Aqueles caracteres são usados freqüentemente em Python e às vezes os chamamos de "dunder" (abreviação de "double-underscore" ou "duplo sublinhado").

É assustador, não? Mas não se preocupe, vamos explicar o que estas linhas significam!

  • Todas as linhas começando com from ou import são linhas que adicionam alguns pedaços de outros arquivos. Então em vez de copiar e colar as mesmas coisas em cada arquivo, podemos incluir algumas partes com from... import ....

  • class Post(models.Model): esta linha define o nosso modelo (é um objeto)

    • class: é uma palavra-chave especial que indica que estamos definindo um objeto

    • Post: é o nome do nosso modelo, podemos lhe dar um nome diferente (mas é preciso evitar os espaços em branco e caracteres especiais). Sempre comece um nome de classe com uma letra maiúscula

    • models.Model: significa que o Post é um modelo de Django, então o Django sabe ele que deve ser salvo no banco de dados

Agora podemos definir as propriedades que discutimos: titulo, texto, data_criacao, data_publicacao e autor. Para isso precisamos definir um tipo de campo (é um texto? É um número? Uma data? Uma relação com outro objeto, por exemplo, um usuário?):

  • models.CharField: assim é como você define um texto com um número limitado de caracteres

  • models.TextField: este é para textos longos sem um limite. Será ideal para um conteúdo de post de blog, certo?

  • models.DateTimeField: este é uma data e hora

  • models.ForeignKey: este é um link para outro modelo

Voltando ao código... Que tal def publish(self):? É exatamente o nosso método de publish que falávamos antes.

  • def: significa que se trata de um função/método

  • publish: é o nome do método

Você pode alterar, se quiser. A regra é que usamos letras minúsculas e sublinhados em vez de espaços em branco (ou seja, se você quer ter um método que calcula o preço médio, você poderia chamá-lo calcula_preco_medio).

Métodos muitas vezes retornam algo, para isso usamos return. Um exemplo é método __str__. Nesse cenário, quando chamamos __str__() teremos um texto (string), com um título do Post.

Se algo ainda não está claro sobre modelos, sinta-se livre para pedir ajuda a sua treinadora ou treinador! Sabemos que é muito complicado, especialmente quando você aprender o que são objetos e funções ao mesmo tempo. Mas espero que está parte pareça menos mágica para você agora!

PreviousCriando uma aplicaçãoNextCriando tabelas

Last updated 6 years ago

Was this helpful?

Para explicar cada pedaço do código precisaríamos de muito tempo, caso você esteja curiosa(o) para saber mais sobre campos do Model e como definir coisas além destas descritas acima, você pode olhar a documentação do Django aqui: .

https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types