【问题标题】:Django Rest Framework Pass extra arguments to SerializerDjango Rest Framework 将额外的参数传递给 Serializer
【发布时间】:2019-03-02 13:05:48
【问题描述】:

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

我的情况是这样的:

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

已有答案:Pass extra arguments to Serializer Class in Django Rest Framework

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

出现的错误是这样的:

TypeError: get_activity_hours () 缺少 1 个位置参数 必需:'project_activity'

【问题讨论】:

    标签: django python-3.x serialization


    【解决方案1】:

    删除 @staticmethod 就可以了!!

    【讨论】:

    • 对!感谢您的帮助!
    猜你喜欢
    • 2018-10-29
    • 2014-09-08
    • 2020-06-16
    • 2014-05-24
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多