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. اكتب فئة خيارات 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)
quiz iconاختبر نفسك

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

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

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