python - 分页自定义 Json
问题描述
我在我的 API 中使用 DRF,我遇到了一种情况,我创建了一个视图“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)
解决方案
推荐阅读
- python - 无法在 anaconda 提示符下运行 tensorboard
- c# - 使用 IntPtr 从非托管 cpp 到托管 c# 的嵌套结构处理
- kubernetes - 在裸机 Kubernetes 集群设置上访问 Kubernetes 仪表板时出错
- android - 处置时的 UndeliverableException 和 onError “同时”发生
- php - htaccess 模板用路径中的完整 url 重写
- r - 使用距离公式调整坐标
- stm32 - STM32 WFI被调用后立即退出
- actions-on-google - 对 Google 采取行动阻止成人关键字
- netlogo - 如何修复意外保存在 NetLogo 3D 中的(2D)NetLogo 模型?
- iphone - 如何将设备系列更改为仅 iPhone?