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.
Desafío
FácilAsigna un género a Book:
- Dentro de
Book, una clase de opcionesGenre: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)
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
3Páginas desde la base de datos
Una lista desde la base de datosUna página para cada libroPractica por tu cuenta: Playground de Django