2016-04-19 20 views
2

シリアライザで現在のユーザを取得しようとしています(この投稿のようなユーザでしたか?)、this answerは動作していませんが、シリアライザのキーエラー 'request'

def current_user(self): 
    return self.context['request'].user 

class PostSerializer(serializers.ModelSerializer): 
    liked = serializers.SerializerMethodField() 

    def get_liked(self, obj): 
     return str(current_user(self)) 

    class Meta: 
     model = Track 
     fields = ('foo', 'liked') 

そして、私は非常に単純なビュー:

@api_view(['GET']) 
def post_item(request, pk): 
     serializer = PostSerializer(post) 
     return Response(serializer.data) 

これは、エラーが発生しているget_likedにしよう:

キー/ API /ポスト/ 1

'要求'

でエラーが発生しました私はここで何かが足りないのですか?

+0

はここに "言っています": ':'デフ(自己、OBJ)get_lked。次のようにしてください: 'def get_liked(self、obj):' – jape

+0

@japeそれは私のコードにはありませんので、質問を入力する間に起こったはずです。一定。 –

答えて

4

次のようなシリアライザにあなたのビューからのコンテキストを送信することができます:

あなたはスペルミス
@api_view(['GET']) 
def post_item(request, pk): 
    serializer = PostSerializer(track, context={'request': request}) 
    return Response(serializer.data) 
+0

今私はとても馬鹿だと感じています。 –

+1

しないでください!それは起こる! – fips