Menu
CoddyTech

Wartości domyślne i puste pola

Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 3 z 23.

Zapisz książkę, nie podając, czy ją przeczytałeś, a baza danych odmówi: NOT NULL constraint failed. Każde pole jest wymagane, dopóki nie określisz inaczej, a do wyboru masz jedną z trzech opcji:

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 to wartość przypisywana do nowego wiersza, jeśli jej nie podasz. null=True pozwala kolumnie przechowywać NULL, które Python odczytuje jako None. blank=True pozwala formularzom i panelowi administracyjnemu akceptować puste pole.

Liczba lub data, których możesz nie znać, wymagają zarówno null=True, jak i blank=True. Tekst wymaga tylko blank=True: pusty tekst jest przechowywany jako "", a null dawałoby mu dwa rodzaje pustej wartości. TextField to tekst bez limitu długości, przydatny do czegoś długiego, na przykład recenzji.

challenge icon

Wyzwanie

Łatwy

Ustaw opcjonalne pola modelu Book jako opcjonalne:

  • is_read ma na początku wartość False.
  • finished może być puste: niedokończona książka nie ma daty.
  • Dodaj pole summary na długi tekst bez limitu długości; może pozostać puste i być przechowywane jako pusty tekst, a nie NULL.

Naciśnij Run, a następnie wpisz na karcie Shell Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): zostanie wyświetlony wynik <Book: Book object (1)>, a nie błąd.

Spróbuj swoich sił

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()

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django