Как выводится книга
Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 5 из 23.
Нажмите Run и введите Book.objects.all() на вкладке Shell: у каждой книги отображается <Book: Book object (1)>, и их невозможно различить. Python преобразует объект в текст с помощью метода __str__, а метод, который получает каждая модель, показывает только идентификатор. Модель может определить собственный метод. Например, Movie на сайте о фильмах может выводить название и год:
class Movie(models.Model):
...
def __str__(self):
return f"{self.title} ({self.released.year})"Тогда в оболочке отображается <Movie: Alien (1979)>, как и в админке и любом шаблоне, который выводит {{ movie }}. Метод __str__ должен возвращать текст. Метод, который выводит его на экран, возвращает None, и тогда вызов str() завершается ошибкой TypeError.
Задание
Легко- Настройте вывод книги в виде её названия и автора, например
Dune by Frank Herbert.
При запуске этого урока добавляются четыре книги. Нажмите Run и введите Book.objects.all() на вкладке Shell.
Попробуйте сами
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)
Все уроки раздела Модели и панель администратора
1Ваша первая модель
Ваша первая модельТипы полейПотренируйтесь самостоятельно: Песочница Django