django order_by查询集,升序和降序

问题描述:

如何通过按日期降序在django中设置我的查询集?django order_by查询集,升序和降序

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之前的-

Django Documentation

+0

这就是它的可爱。谢谢。 – Ayush 2017-10-26 04:57:52

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

+0

比接受的答案更清洁,没有理由拥有.all()。filter(xxx)。 – 2016-03-06 07:26:14

它的工作原理去除.all()

Reserved.objects.filter(client=client_id).order_by('-check_in') 
+3

这与@ leonardo-z的答案基本相同,不是吗? – 2016-09-26 16:49:52

+1

而不是重新发布相同的答案,它投票。 – AKSiddique 2017-07-05 07:37:42

您还可以使用下面的指令:

Reserved.objects.all().filter(client=client_id).order_by('check_in').reverse() 
+1

你可以,但我强烈怀疑让SQL服务器处理命令更有效率,至少在理论上是这样。不过,这很好,很清楚。 – 2016-09-26 16:51:11

按升序排列:

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] 

这是为我工作。

latestsetuplist = SetupTemplate.objects.order_by('-creationTime')[:10][::1] 

添加 - 将按降序排列。 您也可以通过为模型的元素添加默认排序来设置此项。这意味着当你做一个查询时,你只需要做MyModel.objects.all(),它会以正确的顺序出来。

class MyModel(models.Model): 

    check_in = models.DateField() 

    class Meta: 
     ordering = ('-check_in',)