Menu
CoddyTech

Standardwerte und leere Felder

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

Speichere ein Buch, ohne anzugeben, ob du es gelesen hast, und die Datenbank weigert sich: NOT NULL constraint failed. Jedes Feld ist erforderlich, bis du etwas anderes festlegst, und zwar 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 liest. blank=True ermöglicht es Formularen und der Admin-Oberfläche, das Feld leer zu lassen.

Für eine Zahl oder ein Datum, das 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 ergeben. TextField ist Text ohne Längenbeschränkung, für etwas Langes wie eine Rezension.

challenge icon

Aufgabe

Einfach

Mach die optionalen Teile von Book optional:

  • is_read beginnt mit False.
  • finished darf leer sein: Ein noch nicht abgeschlossenes Buch hat kein Datum.
  • Ein neues Feld summary: langer Text, keine Längenbegrenzung, darf leer sein – die Django-Art, Text zu speichern.

Klicke auf Run und gib dann im Tab Shell Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") ein und öffne den Tab Data.

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