Django Rest Framework SerializerMethodField 传递额外参数
我有一个模型方法,需要把请求的用户作为额外的参数传入:
模型方法:
def has_achieved(self, user):
return AwardLog.objects.filter(user=user, badge=self).count() > 0
我在使用Django Rest Framework时,想要调用这个put方法,但不知道怎么从序列化器中传入这个额外的参数:
class BadgeSerializer(serializers.ModelSerializer):
achieved = serializers.SerializerMethodField(source='has_achieved(request.user???)')
class Meta:
model = Badge
fields = ("name", "achieved")
我找不到任何地方有记录这种情况。有没有什么方法可以在我的视图中重写,以便传入这个参数并使用呢?谢谢。
1 个回答
20
为了跟进一下,我是通过使用 self.context['request'].user
来实现的,也就是这样。
def has_achieved(self, obj):
return obj.has_achieved(self.context['request'].user)