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.
Aufgabe
EinfachMach die optionalen Teile von Book optional:
is_readbeginnt mitFalse.finisheddarf 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
1Dein erstes Modell
Dein erstes ModellFeldtypenÜbe selbstständig: Django-Playground