[英]Django Rest Framework SerializerMethodField Pass Extra Argument
I have a model method that requires the request user to be pass in as an extra argument:我有一个模型方法,需要将请求用户作为额外参数传入:
Model Method:模型方法:
def has_achieved(self, user):
return AwardLog.objects.filter(user=user, badge=self).count() > 0
Using the Django Rest Framework I want to call this put don't know how to pass in the extra argument from the Serializer:使用 Django Rest Framework 我想调用这个 put 不知道如何从序列化器传入额外的参数:
class BadgeSerializer(serializers.ModelSerializer):
achieved = serializers.SerializerMethodField(source='has_achieved(request.user???)')
class Meta:
model = Badge
fields = ("name", "achieved")
I cannot find anywhere this scenario has been documented.我找不到任何已记录此场景的地方。 is there a method in my views I could override to pass this in and use?
在我的视图中是否有我可以重写的方法来传递并使用它? Thanks.
谢谢。
Just to follow-up I did this by using self.context['request'].user
ie.只是为了跟进,我通过使用
self.context['request'].user
即做到了这一点。
def has_achieved(self, obj):
return obj.has_achieved(self.context['request'].user)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.