Django Rest Framework SerializerMethodField传递额外参数

时间:2014-07-17 15:53:06

标签: python django django-models django-rest-framework

我有一个模型方法,要求请求用户作为额外参数传入:

模型方法:

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

使用Django Rest Framework我想调用此put不知道如何传递来自Serializer的额外参数:

class BadgeSerializer(serializers.ModelSerializer):

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

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

我无法在任何地方找到这种情况。我的视图中是否有一个方法可以覆盖以传递并使用?感谢。

1 个答案:

答案 0 :(得分:14)

只是为了跟进,我使用self.context['request'].user

来做
def has_achieved(self, obj):

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