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.

يضيف زر التشغيل في هذا الدرس أربعة كتب. اضغط على «تشغيل» واكتب Book.objects.all() في علامة تبويب الصدفة.

جرّب بنفسك

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)

جميع دروس النماذج ولوحة الإدارة

تدرّب بنفسك: Playground لـ Django