Menu
CoddyTech

الخيارات

جزء من قسم النماذج ولوحة الإدارة في رحلة 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() تسمية أحد الصفوف.

challenge icon

التحدي

سهل

أضف نوعًا أدبيًا إلى 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)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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