كيف يُعرَض الكتاب
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 5 من 23.
اضغط على «تشغيل» واكتب Book.objects.all() في علامة تبويب الصَدَفة: يظهر كل كتاب بالشكل <Book: Book object (1)>، ولا يمكنك التمييز بينها. يطلب Book.objects.all() كل الكتب؛ ويشرح الفصل التالي ذلك. يحوّل 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.
التحدي
سهلفي books/models.py، اجعل الكتاب يُعرض بعنوانه، وby، واسم مؤلفه: Dune by Frank Herbert.
اضغط على «العب» واكتب Book.objects.all() في علامة تبويب الصدفة: سيظهر اسم كل كتاب الآن بهذا الشكل <Book: Dune by Frank Herbert>.
جرّب بنفسك
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نموذجك الأول
نموذجك الأولأنواع الحقول2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django