Menu
CoddyTech

Opciones

Parte de la sección Modelos y el panel de administración del Journey de Django de Coddy. Lección 4 de 23.

Un género debe ser uno de unos pocos valores, no cualquier texto. La opción choices limita un campo a una lista, especificada como una clase de enumeración. Un sitio de películas podría limitar para quién es una película:

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 miembro tiene el valor almacenado en la base de datos, "teen", y la etiqueta que leen las personas, "13 and over". En el código escribes Movie.Age.TEEN, así que un error tipográfico es un error en lugar de un valor nuevo. La clase va antes del campo que la usa.

Los formularios y el panel de administración muestran las etiquetas en un menú desplegable y rechazan otros valores; la propia base de datos no los comprueba. movie.get_age_display() devuelve la etiqueta de una fila.

challenge icon

Desafío

Fácil

Asigna un género a Book:

  • Dentro de Book, una clase de opciones Genre: FICTION ("fiction", "Fiction"), SCIFI ("scifi", "Science fiction"), MYSTERY ("mystery", "Mystery"), HISTORY ("history", "History").
  • Un campo genre, de hasta 20 caracteres, limitado a esas opciones, con ficción como valor predeterminado, a menos que elijas otro.

En la pestaña Shell, prueba Book.Genre.SCIFI.label.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Modelos y el panel de administración

Practica por tu cuenta: Playground de Django