分页自定义杰森

时间:2019-03-31 12:07:35

标签: python django django-rest-framework

我正在API中使用DRF,但遇到这种情况,我创建了一个视图“ APIView”,然后无法对其进行分页。

我在进行许多自定义分页之前就做了,但就我而言,我找不到解决方案,需要花费很多时间。因此,请任何人都可以帮助我,并指导我解决问题。

顺便说一句,我阅读了DRF文档,发现了这一点,但我做不到。我发现:“只有在使用通用视图或视图集时,才会自动执行分页。如果使用常规APIView,则需要自己调用分页API,以确保返回分页响应。” < / p>

这是我的views.py代码

class MyInboxAPIView(APIView):
    queryset = Message.objects.all()
    permission_classes = [IsAuthenticated]
    pagination_class = CustomPagination

    def get(self, request):

        single_inbox = ChatRoom.objects.filter(Q(first_user=self.request.user) | Q(second_user=self.request.user)).distinct()
        single_inbox_count = single_inbox.count()
        my_teams = Team.objects.filter(players=self.request.user)
        team_inbox = TeamMessage.objects.filter(team__in=my_teams).order_by().values_list('team').distinct()
        team_inbox_count = team_inbox.count()
        my_inbox_teams = Team.objects.filter(pk__in=team_inbox)
        contact = []
        teams = []


        for i in single_inbox:
            if i.first_user == self.request.user:
            contact.append({"name": i.second_user.first_name + ' ' + i.second_user.last_name,  "room_id": i.pk})
        elif i.second_user == self.request.user:
            contact.append({"name": i.first_user.first_name + ' ' + i.first_user.last_name, "room_id": i.pk})
        for i in my_inbox_teams:
            teams.append({"name": i.name, "team_id": i.pk})

        my_inbox = {"inbox": {"single chat": [{'contact': contact}], "team chat": [{'team': teams}]},
                "number of single chats": single_inbox_count, "number ofteam chats": team_inbox_count}

        return Response(my_inbox)

0 个答案:

没有答案
相关问题