Jak drukuje się książka
Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 5 z 23.
Naciśnij Run i wpisz Book.objects.all() na karcie Shell: każda książka jest wyświetlana jako <Book: Book object (1)> i nie da się ich odróżnić. Python zamienia obiekt na tekst za pomocą metody __str__, a metoda, którą otrzymuje każdy model, wyświetla tylko identyfikator. Model może zdefiniować własną metodę. W przypadku witryny z filmami metoda Movie może wyświetlać tytuł i rok:
class Movie(models.Model):
...
def __str__(self):
return f"{self.title} ({self.released.year})"Wówczas powłoka wyświetla <Movie: Alien (1979)>, podobnie jak panel administracyjny i każdy szablon, który wyświetla {{ movie }}. Metoda __str__ musi zwracać tekst. Metoda, która go wyświetla, zwraca None, a wtedy str() kończy się błędem TypeError.
Wyzwanie
Łatwy- Spraw, aby książka wyświetlała swój tytuł i autora, na przykład
Dune by Frank Herbert.
Uruchomienie tej lekcji dodaje cztery książki. Naciśnij Run i wpisz Book.objects.all() na karcie Shell.
Spróbuj swoich sił
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)
Wszystkie lekcje w sekcji Modele i panel administracyjny
1Twój pierwszy model
Twój pierwszy modelTypy pólPoćwicz samodzielnie: Edytor online Django