Django Rest Framework Передача дополнительных аргументов в Serializer - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь выяснить, как передать дополнительные параметры в сериализатор.

Мой случай таков:

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

Но я не могу понять, как принять собственные параметры.

Ошибка, которая мне кажется, такова:

TypeError: get_activity_hours () отсутствует 1 требуемый позиционный аргумент: 'project_activity'

1 Ответ

0 голосов
/ 26 сентября 2018

Удаление @staticmethod сделает работу !!

...