Menu
CoddyTech

Scelte

Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 4 di 23.

Un genere dovrebbe corrispondere a uno di pochi valori, non a un testo qualsiasi. L'opzione choices limita un campo a un elenco, definito come classe di enumerazione. Un sito di film potrebbe limitare il pubblico a cui è destinato un film:

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)

Ogni membro ha il valore memorizzato nel database, "teen", e l'etichetta che le persone leggono, "13 and over". Nel codice scrivi Movie.Age.TEEN, quindi un errore di battitura causa un errore anziché creare un nuovo valore. La classe viene prima del campo che la usa.

I moduli e l'interfaccia di amministrazione mostrano le etichette in un menu a discesa e rifiutano gli altri valori; il database in sé non esegue controlli. movie.get_age_display() restituisce l'etichetta di una riga.

challenge icon

Sfida

Facile

Assegna un genere a Book. Scrivi una classe di scelte Genre all'inizio di Book, prima dei campi:

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

Poi aggiungi un campo genre, con un massimo di 20 caratteri, limitato a queste scelte e impostato su fiction, a meno che tu non ne scelga un'altra.

Nella scheda Shell, digita Book.Genre.SCIFI.label: stampa 'Science fiction'.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Modelli e pannello di amministrazione

Esercitati da solo: Playground Django