Ich muss meine Django-Anwendung erlauben mir einen Standardwert von NULL für ein bestimmtes Modellfeld festgelegt haben. Ich habe über die, Null und Standard Parameter, aber es ist nicht sehr klar, welche Kombination der drei brauche ich, um den gewünschten Effekt zu bekommen. Ich habe versucht, default=NULL
Einstellung, aber es war ein Fehler. Wenn ich blank=True, null=True
und keinen Standard angeben, wird es nur Standard zurück auf NULL kommen Laufzeit?Django Model Feld Default zu Null
Antwort
Versuchen Sie default=None
. Es gibt keine NULL
in python.
Wenn Sie im Modellfeld null = True angeben, wird der Wert in der Datenbank als NULL gespeichert, wenn der Benutzer keinen Wert angibt.
Das ist in den meisten Fällen nicht der Fall, da normalerweise eine leere Zeichenfolge gespeichert wird. – hY8vVpf3tyR57Xib
@ AlfonsIngomar Falsch, aus der Dokumentation - https://docs.djangoproject.com/en/1.8/ref/models/fields/#null "Wenn True, Django wird leere Werte als NULL in der Datenbank speichern. Standard ist Falsch." – Kevin
Sehen Sie sich den nächsten Absatz an: Vermeiden Sie die Verwendung von null für string-basierte Felder wie CharField und TextField **, da leere String-Werte immer als leere Strings gespeichert werden und nicht als NULL **. Wenn ein stringbasiertes Feld null = True hat, bedeutet dies, dass es zwei mögliche Werte für "keine Daten" gibt: NULL und die leere Zeichenfolge. In den meisten Fällen ist es überflüssig, zwei mögliche Werte für "keine Daten" zu haben. Die Django-Konvention verwendet die leere Zeichenfolge, nicht NULL. – hY8vVpf3tyR57Xib
- 1. Unterschied zwischen null default null und default null in mysql?
- 2. Annotation default "null" -Wert
- 3. Default-NULL-Parameter Rcpp
- 4. selectOneMenu default selection null
- 5. Django Model Choices
- 6. Django Feld Validierung in Model und in Admin?
- 7. Django default = timezone.now + Delta
- 8. NULL vs DEFAULT NULL vs NULL DEFAULT NULL in MYSQL Spaltenerstellung?
- 9. Django Admin & Model Löschung
- 10. Graf Innen viele zu viele Feld Django
- 11. Django Model() vs Model.objects.create()
- 12. Django Model - Inkrementieren Versionsnummer wie Grails
- 13. Default Boolean Filter in Django Admin
- 14. Laravel Eloquent null Feld '
- 15. Django Model - Auswahl gegen Fremdschlüssel?
- 16. Dynamisches Feld zu Django Admin-Formular hinzufügen
- 17. Django Model Manager für Standardoptionen
- 18. Slice auf Django Model Queryset
- 19. Django Model erstellt ID nicht automatisch
- 20. Django Rest Framework Update-Feld
- 21. Django benötigt Feld in Modellform
- 22. Django Modell: E-Mail-Feld eindeutig, wenn nicht null/leer
- 23. Django filtert ein ForeignKey-Feld, wenn es null ist
- 24. mysql timestamp auf default null, nicht current_timestamp
- 25. django Erbe mit foreignkey Feld
- 26. Mehrere ForeignKey zu demselben Feld in Django
- 27. Django: Wie setze ich ein Feld auf NULL?
- 28. Django Model Form mit Nur-Lese-Eigenschaften
- 29. Django: Keine Null-Bedingung, obwohl null = True?
- 30. Nur ForeignKey-Feld in Django-Formular aktualisieren
Das hat den Trick, danke. :) – SPoage
Nur zur Verdeutlichung bezieht sich der NULL, auf den er sich bezieht, auf das Django-Modellfeld. Dies ermöglicht/verhindert, dass ein None-Wert für diesen Wert verwendet wird, der in der Datenbank als NULL gespeichert wird, nicht in Python. Leer bezieht sich darauf, ob der Wert für die Validierung in forms/admin/etc benötigt wird. – Nexion
@Nexion, 'default = None' erlaubt oder verbietet die Verwendung eines None-Wertes. Es teilt Django einfach mit, was der Wert des Feldes sein soll, wenn es nicht spezifiziert ist. 'null = True' erlaubt die Verwendung von None im Python-Code. Es wird in der Datenbank als NULL behandelt. Und Sie haben recht, wenn Sie für die Formularvalidierung ein Leerzeichen verwenden. – Bobort