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

Django实现最佳圈速升序排序,None值后置且按完成圈数降序

排序需求与Django查询解决方案

需求:将最佳圈速(best_lap_time)按升序排列,所有None值置于末尾;末尾的None值需按完成圈数(laps_complete)降序排序。

模型字段定义

...
laps_complete = models.IntegerField(null=True)
best_lap_time = models.IntegerField(null=True)
...

首次尝试与问题

使用以下查询代码:

simsession['results'] = LeagueSessionResults.objects.all()
    .filter(session_id=subsession_id,
            simsession_number=simsession['simsession_number']
    )
    .order_by(F('best_lap_time').desc(nulls_last=True), "-laps_complete")

结果:None值正确排在末尾,但最佳圈速为降序,不符合升序需求。

二次调整与问题

参考文档将desc改为asc后:

.order_by(F('best_lap_time').asc(nulls_last=True), "-laps_complete")

结果:最佳圈速实现升序,但None值排在了顶部,不符合末尾放置的要求。

正确解决方案

确认数据中存在None值后,使用以下代码即可实现全部需求:

.order_by(
    F('best_lap_time').asc(nulls_last=True),
    F('laps_complete').desc(nulls_last=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:47:07