Wird die Django-Modellvalidierung nur über die Formular-API durchgeführt?

8

Ist dies die einzige Möglichkeit, eine benutzerdefinierte Modellüberprüfung zu erstellen? Um es mit den Formen zu tun? Was passiert, wenn ich Daten über andere Medien als Formulare an die Datenbank senden möchte?

    
rick 30.04.2009, 01:44
quelle

3 Antworten

9

Derzeit bietet Django keine Validierung auf Modellebene (neben den grundlegenden "NOT NULL" -, "UNIQUE" - und Längenvalidierungen). Dies ist auf der TODO-Liste, wird aber wahrscheinlich nicht in die kommende Version 1.1 passen.

Sie können validierungsbezogene Tasks in der save() -Methode Ihres Modells ausführen oder before_save signal verwenden (das Anheben der Ausnahme im Signalhandler führt dazu, dass die Transaktion zurückgesetzt wird).

    
zgoda 30.04.2009, 11:02
quelle
5

Die Modellvalidierung wird in Kürze in Django Version 1.2 verfügbar sein. Es ist gerade jetzt verfügbar, wenn Sie einen aktuellen Django-Svn-Checkout des Trunks verwenden.

Verschiedene clean Methoden sind jetzt verfügbar. Einzelheiten dazu finden Sie Ссылка .

    
chefsmart 20.01.2010 06:30
quelle
1

Im Allgemeinen sollten Sie in der Lage sein, mit den von Ihnen erstellten Feldtypen umzugehen und ihre Optionen oder die Meta-Optionen des Modells . Sie können auch die Save-Methode überschreiben , um die Validierung durchzuführen / Hygiene. Wenn das nicht ausreicht, können Sie Ihren eigenen Feldtyp erstellen .

Das Problem ist, dass es kein gut erwartetes Verhalten gibt. Was soll passieren? Sollte eine Ausnahme ausgelöst werden? Die Felder sind eigentlich nur eine Abstraktion auf Datenbankebene, daher sollte es dort nicht mehr Informationen geben als das, was die Datenbank wissen muss.

    
wbyoung 30.04.2009 02:17
quelle

Tags und Links