ChatGPT解决这个技术问题 Extra ChatGPT

django order_by 查询集,升序和降序

如何按日期对 django 中的查询集进行降序排序?

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

我只想过滤所有按签入日期保留的保留日期。


P
Peter Cassetta
Reserved.objects.filter(client=client_id).order_by('-check_in')

注意 check_in 之前的 -

Django Documentation


models.somModalName.all().order_b('-date/time')
列名前的 - 表示降序,而 - 表示升序。
如果我想通过查询参数订购怎么办?我的意思是如果“order=asc”那么我想按升序排序,如果“order=desc”那么我想按降序排序!除了使用“if/else”之外,还有什么方法可以将 asc 或 desc 传递给任何参数,然后根据该参数进行排序?
n
nandhp
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


S
Samsul Islam

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

class MyModel(models.Model):

    check_in = models.DateField()

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

C
Community

您还可以使用以下说明:

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

你可以,但我强烈怀疑让 SQL 服务器处理订单会更有效,至少在理论上是这样。不过,这很好而且很清楚。
a
anjaneyulubatta505

对于升序:

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]

为什么有人想使用第二种方法?
这是可用的选择之一。但是,更好的方法是使用第一种方法。
第二个将返回一个列表,而不是一个查询集。
@ruohola 是的,它会返回列表
A
Andrea

它可以删除 .all()

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

这与@leonardo-z 的答案基本相同,不是吗?
d
double-beep

升序 Reserved.objects.all().filter(client=client_id).order_by('check_in') 降序 Reserved.objects.all().filter(client=client_id).order_by('-check_in')

-(连字符)在这里表示降序。


您可以通过调用过滤器来保存一些查询
S
Samsul Islam

67

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

'-' 表示降序,升序只给出类属性


请为您的问题提供更多背景信息
嗨,欢迎来到 StackOverflow,请检查您的答案,正确格式化,解释(上面的“67”是什么???);你可以参考stackoverflow.com/help/how-to-answer来学习如何写一个“好”的答案
A
Amin Mir
Reserved.objects.filter(client=client_id).earliest('check_in')

或者,

Reserved.objects.filter(client=client_id).latest('-check_in')

这是 earliest()latest() 的文档


O
Oscar Garcia - OOSS

如果由于某种原因你有空值,你可以像这样使用 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


M
Mithun Rana

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

----- 这是降序

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

------这是升序

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

如果您想通过降序选择,只需在属性字段之前添加减号运算符,或者如果您想通过升序选择不需要减号运算符。


b
bihari_gamer

这对我有用。

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

B
Bercove

你可以试试这个

Staffs.objects.filter(active=1).order_by('rank')

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