Menu
CoddyTech

איך ספר מוצג

חלק מהיחידה מודלים וממשק הניהול במסלול ה-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.

challenge icon

אתגר

קל
  • גרמו לספר להציג את שמו ואת שם המחבר שלו, כמו Dune by Frank Herbert.

הפעולה Run בשיעור הזה מוסיפה ארבעה ספרים. לחצו על 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)

כל השיעורים ביחידה מודלים וממשק הניהול

תרגלו בעצמכם: Django אונליין