django order_by查询集,升序和降序

gad*_*dss 250 python sorting django

如何通过按日期降低django中的查询集来订购?

Reserved.objects.all().filter(client=client_id).order_by('check_in')
Run Code Online (Sandbox Code Playgroud)

我只想过滤掉所有保留的check_in日期.

小智 494

Reserved.objects.filter(client=client_id).order_by('-check_in')
Run Code Online (Sandbox Code Playgroud)

注意-之前check_in.

Django文档

  • 列名前的“-”表示降序,没有“-”表示升序。 (3认同)
  • models.somModalName.all().order_b('-日期/时间') (2认同)
  • 如果我想通过查询参数排序怎么办?我的意思是,如果“order=asc”,那么我想按升序排序,如果“order=desc”,那么我想按降序排序!除了使用“if/else”之外,还有什么方法可以将 **asc** 或 **desc** 传递给任何参数,然后根据该参数进行排序? (2认同)

Leo*_*o.Z 65

Reserved.objects.filter(client=client_id).order_by('-check_in')
Run Code Online (Sandbox Code Playgroud)

"check_in"前面的连字符" - "表示降序.升序是隐含的.

我们不必在filter()之前添加all().这仍然有效,但是当你想要来自根QuerySet的所有对象时,你只需要添加all().

更多相关内容:https: //docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters


Tho*_*ner 19

添加 - 将按降序对其进行排序。您还可以通过向模型的元添加默认排序来设置它。这意味着当您执行查询时,您只需执行查询MyModel.objects.all(),然后查询就会以正确的顺序出现。

class MyModel(models.Model):

    check_in = models.DateField()

    class Meta:
        ordering = ('-check_in',)
Run Code Online (Sandbox Code Playgroud)


Pat*_*ick 16

您还可以使用以下说明:

Reserved.objects.filter(client=client_id).order_by('check_in').reverse()
Run Code Online (Sandbox Code Playgroud)

  • 你可以,但我强烈怀疑让SQL服务器处理顺序更有效率,至少在理论上是这样.不过,这很好,很清楚. (4认同)

anj*_*505 13

升序:

Reserved.objects.filter(client=client_id).order_by('check_in')
Run Code Online (Sandbox Code Playgroud)

降序排列:

1.  Reserved.objects.filter(client=client_id).order_by('-check_in')
Run Code Online (Sandbox Code Playgroud)

要么

2.  Reserved.objects.filter(client=client_id).order_by('check_in')[::-1]
Run Code Online (Sandbox Code Playgroud)

  • 第二个将返回一个列表,而不是查询集。 (4认同)

PaV*_*yen 11

它有效删除.all():

Reserved.objects.filter(client=client_id).order_by('-check_in')
Run Code Online (Sandbox Code Playgroud)

  • 这与@ leonardo-z的答案基本相同,不是吗? (3认同)

Vis*_*hak 9

  1. 升序

    Reserved.objects.all().filter(client=client_id).order_by('check_in')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 降序

    Reserved.objects.all().filter(client=client_id).order_by('-check_in')
    
    Run Code Online (Sandbox Code Playgroud)

-(连字符)此处用于表示降序。


小智 8

如果由于某种原因你有空值,你可以使用 F 函数,如下所示:

from django.db.models import F

Reserved.objects.all().filter(client=client_id).order_by(F('check_in').desc(nulls_last=True))

所以它会将空值放在最后。Django 文档:https ://docs.djangoproject.com/en/stable/ref/models/expressions/#using-f-to-sort-null-values


Mit*_*ana 7

这非常简单,只需按照以下说明进行操作即可。

----- 这是降序

Reserved.objects.filter(client=client_id).order_by('-check_in')
Run Code Online (Sandbox Code Playgroud)

------这用于上升

Reserved.objects.filter(client=client_id).order_by('check_in')
Run Code Online (Sandbox Code Playgroud)

如果您想按降序选择,只需在属性字段前添加减号运算符,或者如果您想按升序选择,则无需减号运算符。


Ami*_*Mir 6

Reserved.objects.filter(client=client_id).earliest('check_in')
Run Code Online (Sandbox Code Playgroud)

或者也可以

Reserved.objects.filter(client=client_id).latest('-check_in')
Run Code Online (Sandbox Code Playgroud)

earliest()这是和的文档latest()