Frage

Ist dies der einzige Weg, individuelle Modellvalidierung zu schaffen? Um es zu machen, die Formen mit? Was passiert, wenn ich möchte die Datenbank Daten senden durch andere Mittel als Formen?

War es hilfreich?

Lösung

Zur Zeit Django bietet keine Modell-Level-Validierung (neben basic "NOT NULL", "einzigartig" und Länge Validierungen). Dies ist auf der ToDo-Liste, aber höchstwahrscheinlich nicht kommende Version 1.1 passen.

Sie können Validierungsbezogene Aufgaben in save() Methode des Modells oder verwenden before_save Signal (Anhebung Ausnahme in Signal-Handler bewirkt, dass die Transaktion rückgängig gemacht werden).

ausführen

Andere Tipps

Modellvalidierung wird in Kürze in Django Version 1.2 zur Verfügung. Es ist verfügbar jetzt , wenn Sie einen aktuellen Django svn checkout des Rumpfes verwendet werden.

Verschiedene clean Methoden sind jetzt verfügbar. Siehe http://docs.djangoproject.com/en/dev/ref / models / instances / # id1 .

In der Regel sollten Sie in der Lage zu handhaben, was Sie den eingebauten wollen durch in Modell Meta Optionen . Sie können auch speichern Sie die Methode außer Kraft setzen Validierung / Sanitär auszuführen. Wenn das nicht ausreicht, können Sie Ihren eigenen Feldtyp .

Das Problem ist, dass es kein gutes erwartetes Verhalten ist. Was soll passieren? Sollte eine Ausnahme ausgelöst werden? Die Felder sind nur dann wirklich eine Abstraktion auf Datenbankebene, so sollte es nicht mehr Informationen drin sein als das, was die Datenbank wissen muss.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top