Django REST Framework: Validierung vor einem Löschen

8

Ich möchte eine Validierung ausführen, bevor ein Objekt gelöscht wird, um in bestimmten Fällen das Löschen zu verhindern und als Validierungsfehler zurückzukehren. Wie mache ich das? Was ich momentan nicht richtig finde:

%Vor%     
Neil 27.01.2014, 13:52
quelle

4 Antworten

1

Anstatt eine ValidationError zu erhöhen, werde ich nur eine ParseError oder eine ParseError auslösen ein weiterer benutzerdefinierter Fehler, der zur Fehlerbeschreibung passt:

%Vor%     
Neil 18.06.2014, 09:17
quelle
2

Sie können es mit Berechtigungen lösen:

%Vor%

Fügen Sie dann zu den Berechtigungs-Klassen Ihrer Ansicht

hinzu %Vor%     
avances123 09.06.2014 14:52
quelle
0

Aktualisieren

  

validate wird nicht beim Löschen aufgerufen.

Hmmm. Richtig ja. In diesem Fall würde ich die Exception in pre_delete genau wie Sie auslösen und delete überschreiben, um den Aufruf destroy in einen try -Block umzubrechen.

Wenn Sie except ValidationError as e verwenden, können Sie damit die gewünschte Antwort von Hand erstellen ...

%Vor%

... oder so.

Sie könnten self._errors wahrscheinlich auffüllen und das vorhandene Fehlerreaktionsverhalten nutzen, aber ich kann mir nicht vorstellen, wie ich das off-hand tun soll.

Ich hoffe, das hilft.

Erste Antwort (hat nicht funktioniert):

Überprüfen Sie das Dokument auf Validierung des Objektniveaus .

Implementieren Sie validate , um zu überprüfen, ob die Umfrage festgelegt wurde:

%Vor%

Wenn attrs nicht das ist, was Sie hier brauchen, müssen Sie etwas Cleverer machen - aber es wird Ihren Fehler in der Validierungsphase bekommen.

Ich hoffe, das hilft.

    
Carlton Gibson 13.02.2014 14:18
quelle
0

Die Lösung, die ich gefunden habe, bestand darin, die Zerstörungsmethode auf der API zu überschreiben.

%Vor%

Für mich ist es viel sinnvoller, die destroy -Methode zu validieren, anstatt die Objektberechtigungsprüfung als avances123 zu überprüfen, da die Berechtigung nur nach Berechtigungsmerkmalen sucht und keine Nachrichten zurückgibt im Zusammenhang mit der Validierung.

Ich hoffe, das hilft;)

    
Pablo Abdelhay 18.05.2016 19:02
quelle