Я использую DRF в своих API, и у меня возникла ситуация, я создаю представление "APIView" и затем не могу разбить его на страницы.
Я делал много пользовательских страниц, но в моем случае я не могу найти решение и отнимает у меня много часов. Поэтому, пожалуйста, каждый может помочь мне и направить меня к решению.
Кстати, я прочитал документацию по DRF и нашел это, а также не могу этого сделать. Я обнаружил: «Разбивка на страницы выполняется автоматически только в том случае, если вы используете универсальные представления или наборы представлений. Если вы используете обычный APIView, вам нужно будет самостоятельно вызвать API-интерфейс разбивки на страницы, чтобы убедиться, что вы возвращаете ответ, разбитый на страницы.»
вот мой 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)