【问题标题】:Django Rest Framework SerializerMethodField Pass Extra ArgumentDjango Rest Framework SerializerMethodField 传递额外参数
【发布时间】:2014-09-08 14:24:54
【问题描述】:

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

模型方法:

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")

我在任何地方都找不到这种情况的记录。在我的视图中是否有一种方法可以覆盖以将其传递并使用?谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这就是要走的路:)
    猜你喜欢
    • 2019-03-02
    • 2018-10-29
    • 2014-05-24
    • 2016-07-21
    • 2016-09-25
    • 1970-01-01
    • 2020-04-23
    • 2019-05-12
    • 2016-05-23
    相关资源
    最近更新 更多