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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מודלים וממשק הניהול

תרגלו בעצמכם: Django אונליין