Menu
CoddyTech

Valores padrão e campos vazios

Parte da seção Models e o Admin do Journey de Django da Coddy. Lição 3 de 23.

Salve um livro sem dizer se você o leu, e o banco de dados recusa: NOT NULL constraint failed. Todos os campos são obrigatórios até que você diga o contrário, com uma destas três opções:

has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)

default é o valor que uma nova linha recebe quando você não informa nenhum. null=True permite que a coluna armazene NULL, que o Python lê como None. blank=True permite que formulários e o admin aceitem o campo vazio.

Um número ou uma data que você talvez não saiba precisa de null=True e blank=True. Texto precisa apenas de blank=True: o texto vazio é armazenado como "", e null daria a ele dois tipos de vazio. TextField é texto sem limite de comprimento, para algo longo como uma resenha.

challenge icon

Desafio

Fácil

Deixe opcionais as partes opcionais de Book:

  • is_read começa como False.
  • finished pode ficar vazio: um livro não concluído não tem data.
  • Um novo campo summary: texto longo, sem limite de comprimento, pode ficar vazio — do jeito do Django para texto.

Pressione Run e, em seguida, na aba Shell, digite Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") e abra a aba Data.

Experimente você mesmo

from django.db import models


class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    year = models.IntegerField()
    price = models.DecimalField(max_digits=6, decimal_places=2)
    is_read = models.BooleanField()
    finished = models.DateField()

Todas as lições de Models e o Admin

Pratique por conta própria: Playground de Django