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 תווים, מוגבל לאפשרויות האלה, וברירת המחדל היא fiction, אלא אם תבחר אפשרות אחרת.

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

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

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

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