null=Truesetzt NULL(versus NOT NULL) auf die Spalte in Ihrer DB. Leere Werte für Django-Feldtypen wie DateTimeFieldoder ForeignKeywerden wie NULLin der Datenbank gespeichert .
blanklegt fest, ob das Feld in Formularen benötigt wird. Dies umfasst den Administrator und Ihre benutzerdefinierten Formulare. Wenn blank=Truedann, wird das Feld nicht benötigt, während wenn es ist, kann Falsedas Feld nicht leer sein.
Die Kombination der beiden ist so häufig, dass Sie normalerweise auch Ihre Datenbank benötigen, um NULLWerte für dieses Feld zuzulassen , wenn Sie zulassen möchten, dass ein Feld in Ihrem Formular leer ist . Die Ausnahme sind CharFields und TextFields, die in Django niemals als gespeichert werden NULL. Leere Werte werden in der Datenbank als leere Zeichenfolge ( '') gespeichert .
Einige Beispiele:
models.DateTimeField(blank=True) # raises IntegrityError if blank
models.DateTimeField(null=True) # NULL allowed, but must be filled out in a form
Offensichtlich sind diese beiden Optionen nicht logisch sinnvoll zu verwenden (obwohl es einen Anwendungsfall geben kann, null=True, blank=Falsewenn ein Feld immer in Formularen benötigt werden soll, optional, wenn ein Objekt über etwas wie die Shell bearbeitet wird.)
models.CharField(blank=True) # No problem, blank is stored as ''
models.CharField(null=True) # NULL allowed, but will never be set as NULL
CHARund TEXTTypen werden nie wie NULLvon Django gespeichert , null=Trueist also unnötig. Sie können jedoch eines dieser Felder manuell festlegen None, um das Festlegen als zu erzwingen NULL. Wenn Sie ein Szenario haben, in dem dies möglicherweise erforderlich ist, sollten Sie es trotzdem einbeziehen null=True.