Я пытаюсь понять, как передать сериализатору дополнительные параметры.
Мой случай таков:
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 () missing 1 positional argument required: 'project_activity'
Удаление @staticmethod
выполнит свою работу !!
Верно! Спасибо за помощь!