Django Rest Framework SerializerMethodField传递额外参数

Pro*_*eus 6 python django django-models django-rest-framework

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

模型方法:

def has_achieved(self, user):
    return AwardLog.objects.filter(user=user, badge=self).count() > 0
Run Code Online (Sandbox Code Playgroud)

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

class BadgeSerializer(serializers.ModelSerializer):

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

    class Meta:
       model = Badge
       fields = ("name", "achieved")
Run Code Online (Sandbox Code Playgroud)

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

Pro*_*eus 14

为了跟进,我通过使用self.context['request'].userie做了.

def has_achieved(self, obj):

    return obj.has_achieved(self.context['request'].user)
Run Code Online (Sandbox Code Playgroud)