Menu
CoddyTech

Opções

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

Um gênero deve ter um de poucos valores, não qualquer texto. A opção choices limita um campo a uma lista, definida como uma classe de enumeração. Um site de filmes poderia limitar para quem um filme é indicado:

class Movie(models.Model):
    class Age(models.TextChoices):
        ALL = "all", "All ages"
        TEEN = "teen", "13 and over"
        ADULT = "adult", "18 and over"

    age = models.CharField(max_length=10, choices=Age, default=Age.ALL)

Cada membro tem o valor armazenado no banco de dados, "teen", e o rótulo que as pessoas leem, "13 and over". No código, você escreve Movie.Age.TEEN, então um erro de digitação é um erro, em vez de um novo valor. A classe vem antes do campo que a utiliza.

Os formulários e a área administrativa exibem os rótulos em um menu suspenso e recusam outros valores; o próprio banco de dados não verifica isso. movie.get_age_display() retorna o rótulo de uma linha.

challenge icon

Desafio

Fácil

Atribua um gênero a Book. Escreva uma classe de opções Genre no início de Book, acima dos campos:

  • FICTION: "fiction", "Fiction"
  • SCIFI: "scifi", "Science fiction"
  • MYSTERY: "mystery", "Mystery"
  • HISTORY: "history", "History"

Em seguida, adicione um campo genre, com até 20 caracteres, limitado a essas opções e definido como fiction, a menos que você escolha outra.

Na aba Shell, digite Book.Genre.SCIFI.label: ele imprime 'Science fiction'.

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(default=False)
    finished = models.DateField(null=True, blank=True)
    summary = models.TextField(blank=True)
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Models e o Admin

Pratique por conta própria: Playground de Django