You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Rest Framework自定义get方法中获取过滤后的查询集

解决方法

普通APIView不会自动执行过滤逻辑(只有继承GenericAPIView的视图才会自动处理),你需要手动调用每个过滤后端的filter_queryset方法,逐步对初始查询集进行过滤。

修改你的get方法如下:

def get(self, request):
    # 获取初始查询集,若需动态生成queryset可替换为self.get_queryset()
    queryset = self.queryset
    # 依次应用所有配置的过滤后端
    for backend_class in self.filter_backends:
        backend = backend_class()
        queryset = backend.filter_queryset(request, queryset, self)
    # 传入过滤后的queryset到StatManager
    s = StatManager(queryset)
    return Response(s.dashboard())

说明

  • 遍历你配置的filter_backends列表,逐个实例化过滤后端
  • 每个后端的filter_queryset方法会接收request、当前queryset和视图实例self,返回过滤后的新queryset
  • 最终得到的queryset就是经过所有过滤器处理后的结果,再传入StatManager即可

内容的提问来源于stack exchange,提问作者Oğuzhan Akan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:39:52