按日期降序对queryset进行排序,但是对于元素而言,日期小于now()升序的元素?

时间:2018-08-16 05:51:37

标签: django django-queryset django-orm

我有一个查询集,我想分为两部分。第一部分将包含具有未来日期的对象,而第二部分将包含过去的日期。事情是:我需要按不同的顺序对两个部分进行排序。一-降,二-升。

我需要输出为Queryset而不是列表,因为我想在它们上使用过滤器和分页。

有可能吗?

1 个答案:

答案 0 :(得分:0)

因此,我设法自己解决了这个问题:

from django.db.models import IntegerField, Sum
from django.db.models import When, Case

def get_queryset(self):
    return Course.objects.filter(status=1, type_course=2).annotate(
        past_date=Case(
            When(date__lt=date.today(), then=0),
            When(date__gte=date.today(), then=1),
            output_field=IntegerField()
        )).order_by('-past_date', 'date')
相关问题