2016-05-15 3 views
0

Ich habe einige Validierungen durchzuführen, basierend auf den Serializer-Daten, bevor die Serializer-Daten gespeichert werden, und die Speicherung zu stoppen, falls die Validierungen fehlschlagen. Ich benutze die pre_save, die vor der perform_create-Methode ausgeführt wird, und ich bin in der Lage, die Validierungen durchzuführen, aber ich verstehe nicht, wie man die serializer.save() stoppt, falls diese Validierungen fehlschlagen.Django Stop Serialiser Speichern in CreateAPIView überschreiben pre_save

Ich kann auf Anfrage andere Details angeben. Und ich möchte mit CreateApiView bleiben, es sei denn, es ist absolut unvermeidlich.

+0

Welche Version von DRF verwenden Sie? DRF 3.x verwendet nicht mehr die 'pre_save()' Funktion http://www.django-rest-framework.org/api-guide/generic-views/ – djq

Antwort

0

Sie sollten in der Lage sein serializer.is_valid(raise_exception=True) zu nennen, die eine Ausnahme ausgelöst wird und den Code zu stoppen von jeder weiteren Ausführung, wenn ein Fehler in der Serializer ist

Wenn Sie die pre_save() Funktion verwenden, können Sie immer einen Parse-Fehler erhöhen Ausnahme, ausgelöst, wenn eine Bedingung erfüllt ist:

from rest_framework import exceptions 
raise exceptions.ParseError({"error":["Something went wrong"]})