首页 > 其他 > 详细

django-restframwork filter查询源码分析

时间:2021-07-16 00:04:48      阅读:23      评论:0      收藏:0      [点我收藏+]

视图类继承了ListModelMixin类

class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

当请求过来时,先走get_queryset()方法,得到一个queryset对象,再将这个对象传入到filter_querysete方法中进行过滤。其运行流程如下(如果视图类中没有写filter_queryset方法则去

GenericAPIView中找

)

技术分享图片

 如图所示:先for循环filter_backends中的类。然后加括号实例化,再调用过滤类中的filter_queryset方法。

技术分享图片

 

 再过滤类中,调用自己的get_filter_class(view,queryset,view)

 

技术分享图片

 

再get_filter_class方法中,首先判断有没有filter_class类,和filter_fields字段。如果有,则运行对应代码,否则,返回None

 

django-restframwork filter查询源码分析

原文:https://www.cnblogs.com/ltyc/p/15017453.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!