2016-05-23 15 views
0

これは非常に単純なdjango restframeworkコードです。Djangoはデフォルトエラーメッセージを1つのフィールドにモデル化します

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 

使用これは、私はエラーを取得していますが、この

{ 
    "Email": [ 
     "This field may not be blank." 
    ], 
    "Username": [ 
     "This field may not be blank." 
    ], 
    "Country": [ 
     "This field may not be blank." 
    ], 
} 
のように置く場合210

しかし、このようにエラーを変更する必要があります。私はこれをアーカイブすることができ、どんな提案も大いに感謝します。

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

} 
+1

は、この背後にある目的は何であるのに役立ちます

希望:

は(Pしかし、JSの開発者は、単純なJSONのエラーオブジェクトを解析することができないために正当な理由がなければなりませんか)? – AKS

+0

フロントエンドの開発者にAPIを提供しています。彼はそれをリクエストしており、彼はangularjを使っています。 – msr

+0

フロントエンドの開発者に実際に別々の理由を説明する価値があるかもしれません – Sayse

答えて

0

あなたはすべてのエラーの場合のために、独自のエラー・メッセージを定義することができます:あなたは、常に汎用ビューから作成/更新メソッドを上書きすることができます

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

メディアタイプ:application/jsonを使用した場合、デフォルトのエラーが発生しますが、メディアタイプ:application/x-www-form-urlencodedを使用すると、カスタムエラーメッセージが表示されます。 – msr

0

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) 

...またはビューを上書きしたくない場合は、シリアライザを上書きしようとする可能性があります。これは

+0

おかげさまで助けてください – msr

関連する問題