Menu
CoddyTech

Standardwerte und leere Felder

Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 3 von 23.

Speicherst du ein Buch, ohne anzugeben, ob du es gelesen hast, weigert sich die Datenbank: NOT NULL constraint failed. Jedes Feld ist erforderlich, bis du etwas anderes festlegst, mit einer von drei Optionen:

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 ist der Wert, den eine neue Zeile erhält, wenn du keinen angibst. null=True ermöglicht es der Spalte, NULL zu speichern, was Python als None ausliest. blank=True ermöglicht es Formularen und der Admin-Oberfläche, das Feld leer zu akzeptieren.

Für eine Zahl oder ein Datum, die du möglicherweise nicht kennst, brauchst du sowohl null=True als auch blank=True. Für Text brauchst du nur blank=True: Leerer Text wird als "" gespeichert, und null würde zwei Arten von Leerwerten bedeuten. TextField ist Text ohne Längenbegrenzung, etwa für etwas Längeres wie eine Rezension.

challenge icon

Aufgabe

Einfach

Mache die optionalen Teile von Book optional:

  • is_read beginnt mit False.
  • finished darf leer sein: Ein noch nicht fertig gelesenes Buch hat kein Datum.
  • Füge ein Feld summary für langen Text ohne Längenbegrenzung hinzu; es darf leer gelassen und als leerer Text gespeichert werden, nicht als NULL.

Klicke auf „Ausführen“ und gib dann im Tab „Shell“ Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") ein: Es wird <Book: Book object (1)> ausgegeben, kein Fehler.

Probier es selbst

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

Alle Lektionen in Modelle und Admin-Bereich

Übe selbstständig: Django-Playground