2017-01-13 5 views
1

Ich versuche, die Antwortnachricht (Rückgabedaten) des Serialisierer zu überschreiben. Unten ist mein Beispielcode.Django Restframework Serializer Antwort benutzerdefinierte Nachricht

models.py

from django.db import models 

class MyModel(models.Model): 
    name = models.charField() 
    email = models.EmailField() 
    phone = models.charField() 

serializer.py

from rest_framework import serializers 

class MyModelSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = MyModel 
     fields = ('id', 'name', 'email', 'phone') 

    def validate(self, data): 
     ''' 
      Some validation here 
     ''' 
     return data 

views.py

from rest_framework import generics 

class MyModelList(generics.ListCreateAPIView): 
    queryset = MyModel.objects.all().order_by('-id') 
    serializer_class = MyModelSerializer 

Hier wird, wenn ich versuche, die Daten zu veröffentlichen, die Serializer die Antwort im JSON-Format zurückkehren wie diese

{ 
    'id': 2, 
    'name': 'myname', 
    'email': '[email protected]', 
    'phone': 8569874587, 
} 

Aber ich will die benutzerdefinierten json Antwort wie diese zurück, wenn der Post Erfolg .

{ 
    'success' : 'data posted successfully', 
} 

Typen wie kann ich diese Nachricht für die benutzerdefinierte außer Kraft setzen, bitte hilf mir für diesen, wird es sehr große voll sein, Vielen Dank im Voraus.

Antwort

2

das Erstellen überschreiben Methode von ListCreateAPIView

def create(self, request, *args, **kwargs): 
     serializer = self.get_serializer(data=request.data) 
     serializer.is_valid(raise_exception=True) 
     self.perform_create(serializer) 
     headers = self.get_success_headers(serializer.data) 
     return Response(
      {"Success": "Data posted successfully"}, 
      status=status.HTTP_201_CREATED, 
      headers=headers) 
+0

Vielen Dank ... es gut funktioniert. –

Verwandte Themen