APIView使用分页和序列化器

class RobotLogView(APIView):
    """机器人日志视图"""

    def get(self, request):
        robot_id = request.query_params.get('robot_id')
        machine_id = request.query_params.get("machine_id")
        if not robot_id:
            queryset = Log.objects.all().order_by('-tar_time')
        else:
            # 查询集
            queryset = Log.objects.filter(robot_id=robot_id).order_by('-tar_time')

        if machine_id:
            queryset = Log.objects.filter(robot__machine_id=machine_id).order_by("-tar_time")

        # 分页
        pg = MyPageNumberPagination()
        page_logs = pg.paginate_queryset(queryset=queryset, request=request, view=self)

        # 序列化
        ser_logs = serializers.LogSerializer(instance=page_logs, many=True)

        return pg.get_paginated_response(data=ser_logs.data)
class MyPageNumberPagination(PageNumberPagination):
    page_size = 15  # 默认每页显示2条
    page_query_param = 'page'  # 查询关键字名称:第几页
    page_size_query_param = 'page_size'  # 查询关键字名称:每页多少条
class LogSerializer(serializers.ModelSerializer):
    tar_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')
    created_at = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')
    machine_id = serializers.PrimaryKeyRelatedField(source='robot.machine_id', read_only=True)
    robot_id = serializers.PrimaryKeyRelatedField(source='robot', read_only=True)

    class Meta:
        model = Log
        fields = "__all__"

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值