我有一个字段hotrank
,它保存热门音乐(1,2,3,4 ... 10),
但是如果音乐没有进入前10名,则我将保存0。
另外还有一个字段releaseday
用于保存发行版本音乐之日
现在我想查询:
Music.objects.filter(releaseday__lte=today).order_by('hotrank','-releaseday')
但这是一个问题,hotrank的order_by是从0开始,但0不是顶级音乐
,我怎样才能让order_by从开始hotrank=1
?有什么办法吗?
将queryset的extra()
方法与SQLCASE
表达式一起使用:
Music.objects.filter(releaseday__lte=today) \
.extra({'vrank': 'CASE WHEN hotrank=0 THEN 11 ELSE hotrank END'}) \
.order_by('vrank','-releaseday')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句