2016-07-13 4 views
1

ich eine einfache Viewset haben,Wie füge ich eine benutzerdefinierte Fehlermeldung an die Django Rest Framework Validierung an?

class UserViewSet(viewsets.ModelViewSet): 
    queryset = User.objects.all() 
    # more properties below. 

    def create(self, request, *args, **kwargs): 
     serialized_data = UserSerializer(data=request.data) 

     if serialized_data.is_valid(): 
      # method to create a user. 
      return Response(status=status.HTTP_201_CREATED) 

     else: 
      print serialized_data.errors, 
      print serialized_data.error_messages 

     return Response(status=status.HTTP_404_NOT_FOUND) 

, die folgende Serializer verwendet,

class UserSerializer(serializers.ModelSerializer): 
    error_messages = {} 

    class Meta: 
     model = User 
     fields = ("first_name", "email", 'password', "username") 
     extra_kwargs = {"password": {"write_only": True}} 

    def validate_email(self, value): 
     required_value = "" #something that doesn't matter here 
     if value is not required_vaue: 
      # i want to append the custom error message to the serializer 
      error_messages = {"email": {"invalid": "the email is not acceptable!"}} 

     return value 

Ich versuche, die benutzerdefinierte Fehlermeldung an das Fehlerregister des Serializer mit dem Brauch zu injizieren/anhängen validate_email Methode, so dass ich es mit serialized_data.error_messages verwenden kann.

Antwort

1

sollten Sie Fehler bei der Überprüfung erhöhen:

raise serializers.ValidationError("the email is not acceptable!") 

Oder versuchen Sie benutzerdefinierte Schreiben Validierer http://www.django-rest-framework.org/api-guide/validators/#writing-custom-validators

Es ist nicht in der offiziellen Dokumentation, aber Sie können Anfügen Fehlermeldung versuchen self.errors[field_name]

+0

kann ich anfügen die Fehler zu 'serialized_data.error_messages' ?? – Marty