Wie ein Buch ausgegeben wird
Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 5 von 23.
Klicke auf „Run“ und gib im Tab „Shell“ Book.objects.all() ein: Jedes Buch wird als <Book: Book object (1)> angezeigt, und du kannst sie nicht auseinanderhalten. Python wandelt ein Objekt mithilfe seiner __str__-Methode in Text um; die Methode, die jedes Modell standardmäßig erhält, zeigt nur die ID an. Ein Modell kann seine eigene Methode definieren. Movie auf einer Filmseite könnte den Titel und das Jahr ausgeben:
class Movie(models.Model):
...
def __str__(self):
return f"{self.title} ({self.released.year})"Die Shell zeigt dann <Movie: Alien (1979)> an, ebenso wie die Admin-Oberfläche und jedes Template, das {{ movie }} ausgibt. __str__ muss den Text zurückgeben. Eine Methode, die ihn ausgibt, gibt None zurück, und dann schlägt str() mit einem TypeError fehl.
Aufgabe
Einfach- Lass ein Buch seinen Titel und Autor ausgeben, zum Beispiel
Dune by Frank Herbert.
Beim Ausführen dieser Lektion werden vier Bücher hinzugefügt. Klicke auf „Ausführen“ und gib Book.objects.all() im Shell-Tab ein.
Probier es selbst
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)
Alle Lektionen in Modelle und Admin-Bereich
1Dein erstes Modell
Dein erstes ModellFeldtypenÜbe selbstständig: Django-Playground