Menu
CoddyTech

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

חלק מהיחידה מודלים וממשק הניהול במסלול ה-Django של Coddy. שיעור 3 מתוך 23.

שומרים ספר בלי לציין אם קראת אותו, ובסיס הנתונים מסרב: NOT NULL constraint failed. כל שדה הוא חובה, אלא אם מציינים אחרת, ויש שלוש אפשרויות:

has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)

default הוא הערך שמקבלת שורה חדשה כשלא מספקים ערך. null=True מאפשר לעמודה לאחסן NULL, ש-Python קורא בתור None. blank=True מאפשר לטפסים ולממשק הניהול לקבל את השדה כשהוא ריק.

מספר או תאריך שאולי אינך יודע דורשים גם null=True וגם blank=True. טקסט דורש רק blank=True: טקסט ריק נשמר בתור "", ו-null ייצור עבורו שני סוגים של ריק. TextField הוא טקסט ללא הגבלת אורך, ומתאים למשהו ארוך כמו ביקורת.

challenge icon

אתגר

קל

הפכו את החלקים האופציונליים של Book לאופציונליים:

  • is_read מתחיל בערך False.
  • אפשר להשאיר את finished ריק: לספר שטרם הושלם אין תאריך.
  • הוסיפו שדה summary לטקסט ארוך ללא הגבלת אורך; אפשר להשאיר אותו ריק, והוא יישמר כטקסט ריק, ולא כ-NULL.

לחצו על Run, ואז בלשונית Shell הקלידו Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): יודפס <Book: Book object (1)>, ולא תופיע שגיאה.

נסו בעצמכם

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()
    finished = models.DateField()

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

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