Odino
Odino

Reputation: 141

Django Rest Framework Pass extra arguments to Serializer

I'm trying to figure out how to pass extra parameters to a serializer.

My case is this:

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']

answers already available: Pass extra arguments to Serializer Class in Django Rest Framework

But I can't understand how take the self parameters.

The error that appears to me is this:

TypeError: get_activity_hours () missing 1 positional argument required: 'project_activity'

Upvotes: 3

Views: 3756

Answers (1)

JPG
JPG

Reputation: 88469

Removing @staticmethod will do the job!!

Upvotes: 3

Related Questions