Come viene stampato un libro
Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 5 di 23.
Premi Run e digita Book.objects.all() nella scheda Shell: ogni libro viene visualizzato come <Book: Book object (1)> e non puoi distinguerli. Python converte un oggetto in testo con il suo metodo __str__, e quello che ogni modello riceve mostra solo l'id. Un modello può definirne uno proprio. Il modello Movie di un sito di film potrebbe stampare il titolo e l'anno:
class Movie(models.Model):
...
def __str__(self):
return f"{self.title} ({self.released.year})"La shell mostra quindi <Movie: Alien (1979)>, così come l'interfaccia di amministrazione e qualsiasi template che visualizzi {{ movie }}. __str__ deve restituire il testo. Un metodo che lo stampa restituisce None e, a quel punto, str() genera un TypeError.
Sfida
Facile- Fai in modo che un libro venga stampato con titolo e autore, come
Dune by Frank Herbert.
L’opzione Esegui di questa lezione aggiunge quattro libri. Premi Esegui e digita Book.objects.all() nella scheda Shell.
Provalo tu
from django.db import models
class Book(models.Model):
class Genre(models.TextChoices):
FICTION = "fiction", "Fiction"
SCIFI = "scifi", "Science fiction"
MYSTERY = "mystery", "Mystery"
HISTORY = "history", "History"
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)
genre = models.CharField(max_length=20, choices=Genre, default=Genre.FICTION)
Tutte le lezioni di Modelli e pannello di amministrazione
1Il tuo primo modello
Il tuo primo modelloTipi di campoEsercitati da solo: Playground Django