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

Python/Django中如何对数据库过滤结果按名称、描述升序排序?

Django过滤后按多字段升序排序解决方案

嘿,我来帮你搞定这个排序需求~首先先提个小细节:你代码里的description_icontains少了个双下划线,应该是description__icontains,不然运行会报错哦!

要实现先按Name升序、再按Description升序的排序,只需要在你的QuerySet后面链式调用order_by()方法就行,Django里默认就是升序排序,直接传入字段名就可以,多个字段用逗号分隔,优先级按传入顺序来。

修改后的完整代码

query = request.GET.get('q')
if query:
    # 先修正过滤条件的语法错误,再添加order_by实现排序
    data = Data.objects.filter(
        Q(name__icontains=query) | Q(description__icontains=query)
    ).distinct().order_by('name', 'description')

额外说明

  • 如果之后需要降序排序,只需要在字段名前加负号,比如要按Name降序、Description升序,就写order_by('-name', 'description')
  • distinct()方法要放在filter()之后、order_by()之前,这样排序才会生效(Django的QuerySet链式调用顺序要注意,order_by会影响distinct的结果,不过这里你的场景下这个顺序是没问题的)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:28:02