包括额外的上下文值django rest框架

时间:2015-11-18 06:13:35

标签: python django django-rest-framework

我正在使用django rest框架。我需要在响应中传递一些额外的上下文值,但不要在响应中获得extra_value。

class ResultRowView(generics.ListAPIView):
    serializer_class    = ResultRowSerializer
    permission_classes  = (AccountPermission, )

    def get_serializer(self, *args, **kwargs):
        context = {'extra_value': 5000}
        return self.serializer_class(*args, context=context, **kwargs)

    def get_queryset(self):
        qs = ResultRow.objects.none()
        pk = self.kwargs.get('pk', None)
        try:
            route = IncomingRoute.objects.get(account=self.request.user.account, pk=pk)
            qs = route.app_module.rows.all()
        except Exception, e:
            print 'result_row_query: ', e
        return qs

这里缺少什么?

2 个答案:

答案 0 :(得分:3)

您可以通过覆盖列表方法来执行此操作,如:

def list(self, request, *args, **kwargs):
    response = super(ResultRowView, self).list(request, args, kwargs)
    response.data[ 'extra_value' ] = 5000
    return response

答案 1 :(得分:0)

您必须覆盖get_context_data方法,然后向其添加上下文

def get_context_data(self, **kwargs):
    context = super(PropertyListView, self).get_context_data(**kwargs)
    context['some_key'] = some_value
    return context