2014-07-17 8 views
5

Mam metodę modelu, który wymaga od użytkownika żądania będzie przechodzić jako dodatkowy argument:Django Reszta ramowa SerializerMethodField Przełęcz dodatkowy argument

Metoda modelu:

def has_achieved(self, user): 
    return AwardLog.objects.filter(user=user, badge=self).count() > 0 

Korzystanie z Django Rest Framework Chcę to nazwać nie wiem, jak przekazać dodatkowy argument od Serializera:

class BadgeSerializer(serializers.ModelSerializer): 

    achieved = serializers.SerializerMethodField(source='has_achieved(request.user???)') 

    class Meta: 
     model = Badge 
     fields = ("name", "achieved") 

Nie mogę znaleźć gdziekolwiek ten scenariusz został udokumentowany. czy istnieje metoda, którą mógłbym zastąpić, aby ją przekazać i wykorzystać? Dzięki.

Odpowiedz

11

Po to, aby kontynuować, zrobiłem to za pomocą self.context['request'].user tj.

def has_achieved(self, obj): 

    return obj.has_achieved(self.context['request'].user) 
+0

Tak to jest iść :) –