Filtrar elementos del conjunto de consultas en orden descendente en Django

Salman Mehmood 8 octubre 2023
Filtrar elementos del conjunto de consultas en orden descendente en Django

En este tutorial, aprenderemos a filtrar los elementos del conjunto de consultas en orden descendente con el método order_by() en Django.

Use el método order_by() para filtrar elementos del conjunto de consultas con orden descendente en Django

El método order_by() ordena tus resultados. El orden predeterminado fue el orden cuando los insertamos en la base de datos.

Veamos cómo se ve obtener el orden predeterminado. Primero, obtengamos todos los objetos.

simple.objects.all()

Producción :

<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<apple.com>]>

Usaríamos order_by() si queremos un orden diferente. En lugar de all(), podemos usar order_by().

Se va a operar sobre todos los resultados. Si tuviéramos un filtro antes de este, se ejecutaría primero y luego el order_by().

Ahora, pasaremos una cadena para especificar qué se ordenará. Por ejemplo, si lo filtramos con order_by("id"), obtenemos el mismo resultado porque comienza con el id más pequeño y continúa hacia arriba.

Vea el código a continuación.

simple.objects.order_by("id")

Producción :

<QuerySet [<Simple:www.example.com>,<simple:www.yahoo.com>,<www.example.com>,<example.com>,<facebook.com>,<apple.com>]>

Usamos un - delante de id para invertirlo, así que en lugar de comenzar con el id más pequeño, comenzará con el id más grande. Cuando lo ejecutamos, vemos que www.apple.com es el primer elemento de nuestro conjunto de consultas.

simple.objects.order_by("-id")

Producción :

<QuerySet [<apple.com>,<facebook.com>,<example.com>,<www.example.com>,<simple:www.yahoo.com>,<Simple:www.example.com>]>

También podemos usar order_by() en las otras columnas.

Supongamos que tenemos la columna url. Si lo ordenamos por la url, podemos utilizar el siguiente código.

simple.objects.order_by("url")

Producción :

<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>

Dado que es un campo de cadena, lo ordenará alfabéticamente. Podemos filtrarlo en orden descendente simplemente poniendo - delante.

En nuestro conjunto de consultas, obtenemos el primer elemento, www.yahoo.com.

simple.objects.order_by("-url")

Producción :

<QuerySet [<simple:www.yahoo.com>,<www.example.com>,<www.example.com>,<facebook.com>,<Simple:example.com>,<apple.com>]>

Por lo general, tendríamos múltiples order_by() cuando potencialmente dos columnas podrían tener el orden exacto. Veamos la columna número, que tiene dos números 10 y algunos números diferentes.

simple.objects.order_by("number")

Producción :

<QuerySet [<apple.com>,<Simple:example.com>,<facebook.com>,<www.example.com>,<www.example.com>,<simple:www.yahoo.com>]>

Podemos ver que apple.com está primero porque el número es “2” sigue la misma fila.

Podemos añadir otra opción a order_by() si queremos forzar un ordenamiento más estricto. Primero ordenaremos por el número, y luego por la url.

simple.objects.order_by("number", "url")

Si queremos limitar los resultados, digamos los primeros tres, podemos usar la siguiente sintaxis.

simple.objects.order_by("-id")[:3]

Producción :

<QuerySet [<apple.com>,<facebook.com>,<example.com>]>

Ahora, solo tenemos tres elementos del conjunto de consultas en orden descendente.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn