按日期降序排列查询集,但对于日期小于 now() 升序的元素?
Order queryset by date in descending order, but for elements which dates are less that now() order in ascending?
我有一个查询集,我想分成两部分。第一部分将包含具有未来日期的对象,第二部分将包含过去日期的对象。问题是:我需要以不同的顺序对两部分进行排序。一 - 降序,二 - 升序。
我需要输出为查询集,而不是列表,因为我想对它们使用过滤器和分页。
可能吗?
所以,我设法自己解决了这个问题:
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')
我有一个查询集,我想分成两部分。第一部分将包含具有未来日期的对象,第二部分将包含过去日期的对象。问题是:我需要以不同的顺序对两部分进行排序。一 - 降序,二 - 升序。
我需要输出为查询集,而不是列表,因为我想对它们使用过滤器和分页。
可能吗?
所以,我设法自己解决了这个问题:
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')