django Rest Framework Serializer und Django-Formulare

8

Frage : Wie schreibt man DRY-Code für die Feldvalidierung in Form und Serializer?

Beispiel : Ich habe eine einfache Django-App mit Modellform, die passengers -Feld für Order validiert:

%Vor%

Und der gleiche Code für die Validierung in Order Serializer:

%Vor%

Das ist nicht DRY und ich habe zweimal dieselbe Logik geschrieben. Wie kann ich das vermeiden? Vielleicht kann ich den Serializer vom Formular oder etwas ähnliches erben.

    
zymud 04.06.2014, 20:49
quelle

3 Antworten

7

Sie können Ihren Serializer verwenden, um die Daten in der is_valid -Methode Ihres Formulars zu deserialisieren und zu validieren.

%Vor%     
xjtian 04.06.2014, 20:57
quelle
3

Hier meine Implementierung der wiederverwendbaren Validierungsklasse für Modellformen. Alle nativen Django-Dinge sind hier außer neu geschriebene get_serializer method. Geprüfter Arbeitszustand mit Django 1.8.13.

%Vor%

Und hier ist ein Anwendungsbeispiel:

%Vor%     
Alexander Fedosov 15.11.2016 08:10
quelle
1

Ich würde vorschlagen, alle Validierung (wenn möglich) in das Modell (Validatoren oder clean ) zu setzen.

ModelForm und ModelSerializer verwenden Sie dann die Modus-Validierung.

    
Denis Cornehl 05.06.2014 07:49
quelle