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

Django中嵌套序列化器场景下如何通过URL参数过滤嵌套数据?

DRF嵌套关联数据查询实现方法

你可以通过Django Filter原生支持的跨关联查询语法实现嵌套字段过滤,操作步骤如下:

  • 第一步:修改视图过滤配置
    Django FilterBackend默认支持用双下划线__语法跨外键关联查询嵌套字段,你只需要在filterset_fields中追加关联模型的对应字段即可。如果要根据assignParameter的parameterName过滤关联的Robot数据,修改后的视图代码如下:
class RobotViewSet(mixins.ListModelMixin,GenericViewSet):
    queryset = Robot.objects.all()
    serializer_class = RobotSerializer
    filter_backends = [DjangoFilterBackend]
    # param是Robot模型里assignParameter外键设置的related_name,后面跟关联表的字段名
    filterset_fields = ['robot', 'param__parameterName']
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]
  • 第二步:构造查询URL
    配置完成后,直接通过如下格式的URL发起请求即可查询匹配嵌套参数的Robot数据:
    接口地址/?param__parameterName=你要查询的参数名
    如果需要同时匹配机器人名称和嵌套参数,直接拼接查询参数即可:
    接口地址/?robot=robotname&param__parameterName=你要查询的参数名

补充说明:你现有序列化器代码中引用的jenkinsHistorySerializer未定义,属于笔误,不影响本次嵌套过滤的逻辑,按需补全对应序列化类即可。如果需要实现模糊匹配、范围查询等更复杂的过滤规则,可以自定义FilterSet类替代默认的filterset_fields配置,获得更灵活的查询能力。

内容的提问来源于stack exchange,提问作者Rituparna Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:39:02