الخيارات
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 4 من 23.
يجب أن يكون النوع واحدًا من بضعة قيم، لا أي نص. يقيّد الخيار choices الحقل بقائمة تُحدَّد على شكل فئة تعداد. يمكن لموقع أفلام أن يقيّد الفئة العمرية المناسبة للفيلم:
class Movie(models.Model):
class Age(models.TextChoices):
ALL = "all", "All ages"
TEEN = "teen", "13 and over"
ADULT = "adult", "18 and over"
age = models.CharField(max_length=10, choices=Age, default=Age.ALL)لكل عضو قيمة تُخزَّن في قاعدة البيانات، مثل "teen"، وتسمية يقرؤها الناس، مثل "13 and over". في الشيفرة تكتب Movie.Age.TEEN، لذا فإن الخطأ المطبعي يُعد خطأً بدلًا من أن يصبح قيمة جديدة. تأتي الفئة قبل الحقل الذي يستخدمها.
تعرض النماذج ولوحة الإدارة التسميات في قائمة منسدلة وترفض القيم الأخرى؛ أما قاعدة البيانات نفسها فلا تتحقق من ذلك. تُرجع movie.get_age_display() تسمية أحد الصفوف.
التحدي
سهلأضف نوعًا أدبيًا إلى Book. اكتب فئة خيارات Genre في أعلى Book، فوق الحقول:
FICTION:"fiction"،"Fiction"SCIFI:"scifi"،"Science fiction"MYSTERY:"mystery"،"Mystery"HISTORY:"history"،"History"
ثم أضف حقلًا باسم genre، يقبل ما يصل إلى 20 حرفًا، ومحصورًا بهذه الخيارات، مع اختيار fiction افتراضيًا ما لم تختر غيره.
في علامة تبويب Shell، اكتب Book.Genre.SCIFI.label: ستُطبع 'Science fiction'.
جرّب بنفسك
from django.db import models
class Book(models.Model):
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)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
2الاستعلام باستخدام ORM
إنشاء الصفوفAll وGetالتصفية وعمليات البحثعدّ الصفوفترتيب الصفوفالتحديث والحذفتدرّب بنفسك: Playground لـ Django