首页 > 解决方案 > 如何添加分页:super()

问题描述

我正在尝试在模型视图集中使用 super().list() 方法添加分页

class RecentlyViewedVideosViewSet(ResponseViewMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = RecentlyViewedVideos.objects.all()
    serializer_class = RecentlyViewedVideosSerializer

    def list(self, request, **kwargs):
        print('list')
        try:
            if 'learner_id' in self.kwargs:
                learner_id = self.kwargs['learner_id']
            else:
                learner_id = self.request.learner.id
            response_data = super().get_queryset().filter(learner_id=learner_id)
            print(response_data)
            serializer = RecentlyViewedVideosSerializer(response_data, many=True)
            return self.jp_response(s_code='HTTP_200_OK', data=serializer.data)

在输出中,它显示了表格中的所有文档,但我只需要“详细信息”中的那些细节,给我一种获得准确输出的方法。

标签: python-3.xdjangodjango-modelsdjango-rest-framework

解决方案


在方法中这样做可能会更好.get_queryset(…)

def get_queryset(self):
    if 'learner_id' in self.kwargs:
        learner_id = self.kwargs['learner_id']
    else:
        learner_id = self.request.learner.id
    return super().get_queryset().filter(learner_id=learner_id)

那么过滤,分页等的样板代码,视图仍然是.list(…)通过ListModelMixin.


推荐阅读