אפשרויות
חלק מהיחידה מודלים וממשק הניהול במסלול ה-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 ז'אנר. כתבו מחלקת אפשרויות 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)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מודלים וממשק הניהול
1המודל הראשון שלך
המודל הראשון שלךסוגי שדותתרגלו בעצמכם: Django אונליין