首页 > 解决方案 > Django Rest Framework 将额外的参数传递给 Serializer

问题描述

我试图弄清楚如何将额外的参数传递给序列化程序。

我的情况是这样的:

class ActivityDataHours(generics.RetrieveUpdateAPIView):

    permission_classes = (permissions.IsAuthenticated,)

    def get(self, request, *args, **kwargs):

        pa = ProjectActivity.objects.values('project_code').distinct()

        if request.GET.get('activityCode') is not None:
            is_code_filter = False
        else:
            is_code_filter = True

        return Response(ActivityDataHoursSerializer(pa, many=True, context={'is_code_filter': is_code_filter}).data)



class ActivityDataHoursSerializer(serializers.ModelSerializer):

    activity_hours = serializers.SerializerMethodField()

    @staticmethod
    def get_activity_hours(self, project_activity):
        is_code_filter = self.context.get("is_code_filter")

        wh = WorkedHours.objects.values('project_code')

        return wh

    class Meta:
        model = Project
        fields = ['activity_hours']

答案已经可用:将额外参数传递给 Django Rest Framework 中的序列化程序类

但我不明白如何获取 self 参数。

在我看来的错误是这样的:

类型错误:get_activity_hours () 缺少 1 个需要的位置参数:'project_activity'

标签: djangopython-3.xserialization

解决方案


删除@staticmethod就行了!!


推荐阅读