在Django中,如何按日期降序排序查询集?
Reserved.objects.all().filter(client=client_id).order_by('check_in')
我只想按照check_in日期从大到小筛选所有保留的项。
Reserved.objects.filter(client=client_id).order_by('-check_in')
check_in
之前的-
。
在列名之前的-
表示“降序”,而没有-
表示“升序”。
Reserved.objects.filter(client=client_id).order_by('-check_in')
在"check_in"前面的连字符 "-" 表示降序排序。升序排序是默认的。
我们不必在 filter() 前面添加 all()。那样仍然可以工作,但只有当您想要从根 QuerySet 获取所有对象时才需要添加 all()。
更多信息请参见: https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters
在字段前添加“-”可以按降序排序。
您还可以通过将默认顺序设置为模型的元数据来设置此项。这意味着当您进行查询时,只需执行MyModel.objects.all()
,它将按正确的顺序显示。
class MyModel(models.Model):
check_in = models.DateField()
class Meta:
ordering = ('-check_in',)
你也可以使用以下指令:
Reserved.objects.filter(client=client_id).order_by('check_in').reverse()
升序排列:
Reserved.objects.filter(client=client_id).order_by('check_in')
按降序排序:
1. Reserved.objects.filter(client=client_id).order_by('-check_in')
或者2. Reserved.objects.filter(client=client_id).order_by('check_in')[::-1]
删除 .all()
同样可以达到效果:
Reserved.objects.filter(client=client_id).order_by('-check_in')
Ascending order
Reserved.objects.all().filter(client=client_id).order_by('check_in')
Descending order
Reserved.objects.all().filter(client=client_id).order_by('-check_in')
67
Reserved.objects.filter(client=client_id).order_by('-check_in')
这很容易和简单,只需按照以下说明操作。
----- 这表示降序排列
Reserved.objects.filter(client=client_id).order_by('-check_in')
------ 此为升序排列
Reserved.objects.filter(client=client_id).order_by('check_in')
如果您想按降序选择,只需在属性字段之前添加减号运算符;如果您想按升序选择,则不需要减号运算符。