1

に辞書を追加します。これは、私のserializers.pyです:Djangoの残りのフレームワークは、シリアライザ

class GetUserDetail(APIView): 
    def get(self, request, format=None): 
     sysuser = SysUser.objects.get(id=1) 
     serializer = SysUserSerializer(sysuser) 
     serializer.data['gender'] = 'male' # i don't think this line is working 
     return Response(serializer.data, status=200) 

しかし、私はこの応答を取得:

class SysUserSerializer(serializers.ModelSerializer): 
    pk = serializers.IntegerField(read_only=True) 
    login_id = serializers.CharField(required=False) 
    name = serializers.CharField(required=False) 

    class Meta: 
     model = SysUser 
     fields = ('pk','login_id','name') 

これが私のviews.pyある

{"pk": 1, "login_id": "john77", "name": "John"} 

私はこのような応答をしたい:

{"pk": 1, "login_id": "john77", "name": "John", "gender": "male"} 

どうすればいいですか?それは可能ですか?

+0

それは、この{ "PK":1、 "LOGIN_ID": "john77"、 "名": "ジョン"}印刷@MosesKoledoyeありがとう。 – Krisnadi

答えて

3

ここで問題はserializer.dataはインスタンス引数ではなく、それを返すpropertyです。したがって、serializer.dataを変数に割り当てることでこれを修正できます。

class GetUserDetail(APIView): 
    def get(self, request, format=None): 
     sysuser = SysUser.objects.get(id=1) 
     serializer = SysUserSerializer(sysuser) 
     data = serializer.data 
     data['gender'] = 'male' 
     return Response(data, status=200) 

また、あなたは、シリアライザのvalidate方法でserializer.dataにデータを割り当てることができます

+0

ありがとう。できます – Krisnadi

関連する問題