Menu
CoddyTech

Bir Kitap Nasıl Görüntülenir

Coddy'nin Django Journey'sinin Modeller ve Yönetim Paneli bölümünün bir parçası. Ders 5 / 23.

“Oyna”ya bas ve Shell sekmesine Book.objects.all() yaz: her kitap <Book: Book object (1)> olarak görünür ve onları birbirinden ayırt edemezsin. Book.objects.all() tüm kitapları ister; sonraki bölüm bunu açıklar. Python, bir nesneyi metne dönüştürmek için nesnenin __str__ yöntemini kullanır ve her modelin sahip olduğu varsayılan yöntem yalnızca kimliği gösterir. Bir model kendi yöntemini tanımlayabilir. Bir film sitesindeki Movie, başlığını ve yılını yazdırabilir:

class Movie(models.Model):
    ...

    def __str__(self):
        return f"{self.title} ({self.released.year})"

Ardından Shell'de <Movie: Alien (1979)> görünür; yönetici arayüzünde ve {{ movie }} ifadesini yazdıran tüm şablonlarda da aynı şekilde görünür. __str__ metni döndürmelidir. Metni yazdıran bir yöntem None döndürür ve bu durumda str() bir TypeError hatası verir.

challenge icon

Görev

Kolay

books/models.py dosyasında, bir kitabın başlığı, by ve yazarıyla birlikte yazdırılmasını sağlayın: Dune by Frank Herbert.

Run’a basın ve Shell sekmesine Book.objects.all() yazın: artık her kitap <Book: Dune by Frank Herbert> şeklinde görünür.

Kendin dene

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)

Modeller ve Yönetim Paneli bölümündeki tüm dersler

Kendi başına pratik yap: Django playground