Order by en vistas Django
Django cuenta con el método order by para ordenar la lista de datos de las vistas sin recurrir a las consultas de base de datos.
Esta función del ORM de Django funciona tanto en vistas basadas en clases y en las basadas en funciones. Para mayor referencia utilizaremos la versión 2.2.5 de Django.
Nota. En los ejemplos se utiliza el modelo llamado Libros, con lo campos de id, descripción y estado. El modelo ya está migrado a la base de datos, es necesario para poder trabajar en los filtros.
Podría interesarte Filtrar contenido del modelo en Django
Order by ascendente en vistas
Utilizando el método order_by de Django ordenaremos el resultado de una queryset del modelo en forma ascendente.
Aunque tanto en las vistas basada en clases como en funciones el método se utiliza de la misma manera, veamos ambos casos.
from django.views import generic
#Vista basada en clases
class LibroView(generic.ListView):
queryset = Libros.objects.order_by('id')
template_name = 'home.html'
from django.shortcuts import render
#Vista basada en funciones
def LibroView(request):
libro = Libros.objects.order_by('id')
return render(request, 'home.html', {'obj':libro})
Mediante los objetos del modelo Libros se utiliza el método order_by, entre paréntesis se coloca la columna de la taba. De esta forma por defecto se ordena en ascendente.
Order by descendente
Order_by también permite el orden descendente, para hacerlo no se coloca algún termino como en base de datos. Django identifica el orden descendente aplicando un signo dentro de los paréntesis.
Apliquemos el signo negativo para ambas vistas.
from django.views import generic
#Vista basada en clases
class LibroView(generic.ListView):
queryset = Libros.objects.order_by('-id')
template_name = 'home.html'
from django.shortcuts import render
#Vista basada en funciones
def LibroView(request):
libro = Libros.objects.order_by('-id')
return render(request, 'home.html', {'obj':libro})
Se utiliza de la misma manera el método, únicamente se agrega el signo negativo junto al nombre de la tabla.
Podría interesarte Primera aplicación web con Django
En estos ejemplos pudimos identificar como se administra el contenido de la base de datos sin tener conocimientos de SQL u otro lenguaje.