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

Django按外键关联字段update_user.NAM排序Drawing列表失败求助

解决DRF中按外键关联字段排序失效的问题

问题出在你用点号(.)表示跨表关联字段,而DRF的OrderingFilter遵循Django ORM的语法规范,需要用**双下划线(__)**指定关联模型的字段。

修复步骤:

1. 修改ViewSet的ordering_fields配置

把点号替换成双下划线:

class DrawingViewSet(viewsets.ModelViewSet):
    queryset = m.Drawing.objects.all()
    serializer_class = s.DrawingSerializer
    pagination_class = DrawingResultsSetPagination 
    filter_backends = [filters.OrderingFilter] 
    # 将 update_user.NAM 改为 update_user__NAM
    ordering_fields = ['id','update_user__NAM']
    ordering = ['-id']

2. 调整URL请求参数

同样把点号换成双下划线:

  • 降序排序:http://localhost/api/drawings/?ordering=-update_user__NAM
  • 升序排序:http://localhost/api/drawings/?ordering=update_user__NAM

原理说明

Django ORM中,跨模型的字段引用需要用双下划线(__)表示关联关系,DRF的OrderingFilter直接复用了这个语法。你之前用的点号(.)无法被DRF识别为合法字段路径,因此排序逻辑未生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:07:14