2016-04-19 5 views
2

Ich versuche, den aktuellen Benutzer in meinem Serializer zu bekommen, um eine Bedingung zu bewerten (hat Benutzer diesen Beitrag gefallen?), this answer ist, was ich versuchte, aber es scheint nicht zu funktionieren:Key Fehler 'Anfrage' in Serializer

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') 

Und meine sehr einfache Ansicht:

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

Wann get_liked versucht wird dieser Fehler wird ausgelöst:

Key Fehler bei/api/Beiträge/1

'request'

Fehle ich etwas hier?

+0

Sie falsch geschrieben hier "gemocht": 'def get_lked (self, obj):'. Versuchen Sie Folgendes: 'def get_liked (self, obj):' – jape

+0

@jape Dieser Tippfehler ist nicht in meinem Code, also muss es passiert sein, während Sie die Frage eingeben. Fest. –

Antwort

4

Sie können den Kontext aus Ihrer Sicht auf die Serializer wie diese an:

@api_view(['GET']) 
def post_item(request, pk): 
    serializer = PostSerializer(track, context={'request': request}) 
    return Response(serializer.data) 
+0

Jetzt fühle ich mich sehr dumm, ich kann nicht glauben, dass ich etwas so offensichtlich übersehen habe. –

+1

Nicht! Es passiert! – fips

Verwandte Themen