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
相关产品推荐
相关产品推荐

