python - 在忽略值的同时排序查询集

标签 python django

我有一个字段hotrank,它保存了热门音乐(1,2,3,4...10)
但如果音乐没有进入前 10 名,我将节省 0。
我还有另一个名为 releaseday 的字段,它保存了音乐的发布日期

现在我想查询:

 Music.objects.filter(releaseday__lte=today).order_by('hotrank','-releaseday') 

但是这里有一个问题,hotrank的order_by是从0开始的,但是0不是top music
如何让order_by从hotrank=1开始?有什么方法吗?

最佳答案

我认为您可以从查询结果中得到 hotrank=0 的结果,如下所示:

Music.objects.filter(releaseday__lte=today).exclude(hotrank=0).order_by(
                     '-hotrank','-releaseday') 

如果你想在有序结果之后添加 hotrank=0 的结果,你可以这样做:

released_music = Music.objects.filter(releaseday__lte=today).order_by('-hotrank',
                                                                      '-releaseday')
result = released_music.exclude(hotrank=0) | released_music.filter(hotrank=0) 

关于python - 在忽略值的同时排序查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941954/

相关文章:

Python 2.7.5 打印 float 列表时出错

python - 狮身人面像警告 : targets for x source files that are out of date

Python 字典 : "in" vs "get"

python - 如何最好地从另一个 Docker 容器使用 Django 数据库?

python - 在 Python 2.7 中将 ½ 解析为 0.5

django - 使用 Django 1.10、mongodb 和 Python 3.4.3 进行项目设置

python - Django 使用 Redis 进行缓存

python - 在大型表上使用 Django-Filter 以及 DataTables2

python - 为什么 subprocess.Popen 的输出与预期的不一样?

python - 如何使用 matplotlib 在两个环之间填充