الخيارات
جزء من قسم النماذج ولوحة الإدارة في رحلة 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:
- داخل
Book، أنشئ صنف خياراتGenre:FICTION("fiction"،"Fiction")، وSCIFI("scifi"،"Science fiction")، وMYSTERY("mystery"،"Mystery")، وHISTORY("history"،"History"). - أنشئ حقلًا باسم
genre، بطول يصل إلى 20 محرفًا، ومقيّدًا بهذه الخيارات، ويكون نوعه الأدبي الخيال ما لم تختر غير ذلك.
في علامة التبويب Shell، جرّب Book.Genre.SCIFI.label.
جرّب بنفسك
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