python - Django Rest Framework SerializerMethodField 传递额外参数

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

我无法在任何地方找到这种情况的记录。在我看来有没有一种方法可以重写以传递并使用它?谢谢。

最佳答案

为了跟进,我通过使用 self.context['request'].user ie 做到了这一点。

def has_achieved(self, obj):

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

关于python - Django Rest Framework SerializerMethodField 传递额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808213/

相关文章:

python - 如何使用 Pymongo 在 MongoDB 中选择单个字段?

python - 用于显示 Django 版本的 Django 模板标签

python - 如何在 Django 的 latex 模板中正确设置变量

python - Django:限制模型数据

python - 字符串中的空花括号是什么意思?

python - Bokeh 布局的背景颜色

python - PySide/PyQT5 : How to emit signals from a QGraphicsItem?

django - 生产服务器上的 smtp django

django - 如何将用户名添加到文件字段?

jquery - 如何使用 jQuery ajax 实时搜索 Django 中的模型?