Wie mache ich einen Rest_framework-Serializer, der überflüssige Felder verbietet?

8

Ich habe bemerkt, dass der Serializer nicht wirklich streng ist, wenn es darum geht, Eingaben mit unbekannten Feldern abzulehnen:

%Vor%

Gibt es eine Möglichkeit, Serializer so zu konfigurieren, dass in dieser Situation ein Validierungsfehler über bar zurückgegeben wird?

    
Kos 12.03.2014, 13:25
quelle

3 Antworten

3

Das funktioniert definitiv:

%Vor%

Verschachtelte und aufgelistete Serializer

Dies funktioniert nicht, wenn Sie einen solchen Serializer als Feld in einem anderen Serializer verwenden. In diesem Fall hat der untergeordnete Serializer keinen Zugriff auf die ursprünglichen Daten und Sie erhalten eine Ausnahme.

Dasselbe gilt für ListSerializer (oder many=True ), da der untergeordnete Serializer des Listenserializers die einzelnen initial_data -Elemente nicht erhält (es gibt einen GitHub Ticket dafür).

In diesem Fall ist die etwas weniger saubere Lösung, die in beiden Fällen funktioniert:

%Vor%     
Jamie Cockburn 24.03.2016 16:47
quelle
1

Mit django REST Framework v. 3.3.0 wird es sein:

%Vor%     
Opal 05.11.2015 12:28
quelle
0

s.data enthält nicht bar , also was ist der Anwendungsfall, wo es wichtig ist?

Nachdem ich mir die Dokumente angeschaut habe, habe ich keine native Lösung gesehen. Sie könnten .validate() überschreiben, um eine Überprüfung durchzuführen und ValidationErrors auf diese Weise zu erhöhen. Ich habe das nicht mit partial=True getestet, also solltest du das überprüfen, wenn du es benutzt.

%Vor%     
Scott Woodall 12.03.2014 14:17
quelle