2016-05-23 16 views
0

Dieser sehr einfache Django Restrahmencode.Django Modelle Standard-Fehlermeldungen in einem Feld

models.py

class User(models.Model) 
    Email = models.CharField(max_length=100) 
    Username = models.CharField(max_length=100) 
    State = models.CharField(max_length=100) 

serializers.py

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('Email','Username','State') 

views.py

class UserList(generics.ListCreateAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

Wenn diese Anwendung ich Fehler aus bin immer diese setzen wie

{ 
    "Email": [ 
     "This field may not be blank." 
    ], 
    "Username": [ 
     "This field may not be blank." 
    ], 
    "Country": [ 
     "This field may not be blank." 
    ], 
} 

Aber ich muss den Fehler wie folgt ändern. Wie kann ich dies archivieren und jeden Vorschlag sehr geschätzt.

{"error": 
    [ 
    "Email is required", 
    "Username is required", 
    "County is required" 
    ] 

} 
+1

Was dahinter das Ziel ist? – AKS

+0

Ich gebe meine APIs an meinen Frontend-Entwickler, den er bittet, und er benutzt angularjs. – msr

+0

Es könnte sich lohnen, Ihrem Frontend-Entwickler zu erklären, warum sie eigentlich getrennt sind, sie beziehen sich auf ein tatsächliches Feld, da sie – Sayse

Antwort

0

Sie können Ihre eigenen Fehlermeldungen für jeden Fehlerfall definieren:

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('Email','Username','State') 

    def __init__(self, *args, **kwargs): 
     super(UserSerializer, self).__init__(*args, **kwargs) 
     for field in self.Meta.fields: 
      self.fields[field].error_messages['required'] = "%s is required" % field 
+0

Wenn ich den Medientyp verwende: application/json gibt es einen Standardfehler, aber wenn ich Medientyp: application/x-www-form-urlencoded benutze, gibt es mir benutzerdefinierte Fehlermeldungen. – msr

0

Sie können jederzeit die/Update-Methoden aus den generischen Ansichten erstellen zu überschreiben.

class UserList(generics.ListCreateAPIView): 

    queryset = User.objects.all() 
    serializer_class = UserSerializer 

    def create(self, request, *args, **kwargs): 
     serializer = self.get_serializer(data=request.data) 
     if not serializer.is_valid(raise_exception=False): 
      # TODO: add here your custom error dict using serializer.errors 
      return Response({"error":...}, status=...) 
     self.perform_create(serializer) 
     headers = self.get_success_headers(serializer.data) 
     return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) 

Oder ... Sie könnten versuchen, die Serializer zu überschreiben ..., wenn Sie nicht die Ansicht zu überschreiben wollen: Es wäre so etwas wie sein.

(Allerdings muss es ein guter Grund für einen JS-Entwickler nicht ein einfaches json Fehlerobjekt analysieren zu können: P)

this helps

+0

danke für dich hilfe – msr