2016-07-13 10 views
1

私は注入/カスタムでシリアライザのエラーレジスタにカスタムエラーメッセージを追加しようとしているシンプルなビューセットは、以下のシリアライザを使用していますDjango Rest Frameworkの検証にカスタムエラーメッセージを追加するにはどうすればいいですか?

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) 

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 

を持っていますvalidate_emailメソッドですので、serialized_data.error_messagesと併用することができます。

答えて

1

あなたは、検証エラーを発生させる必要があります。

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

または書き込みしようとしたカスタムは、それは公式ドキュメントではありませんが、self.errors[field_name]

+0

にエラーメッセージを追加しようとすることができhttp://www.django-rest-framework.org/api-guide/validators/#writing-custom-validators

をバリ、私は追加することができます'serialized_data.error_messages'へのエラー?? – Marty

関連する問題