Cómo filtrar datos en Django?

Cómo filtrar datos en Django?
Es un requisito muy común que la aplicación web muestre datos en la página web en función del interés del usuario. La función de búsqueda de la aplicación lo hace más fácil de usar. Django Framework tiene un incorporado filtrar() Método para filtrar datos de las tablas de la base de datos. Una tabla puede contener muchos registros y, a veces, se requiere determinar algunos datos específicos en función de los criterios particulares. Esta tarea se vuelve más fácil usando el filtro() Método de diferentes maneras. Cómo se pueden filtrar los datos de una tabla de base de datos utilizando el método de filtro de cuatro maneras diferentes se discutirán en este tutorial.

Requisitos previos

Antes de practicar los ejemplos de este tutorial, debe completar las siguientes tareas:

  1. Instale la versión 3+ de Django en Ubuntu 20+ (preferiblemente)
  2. Crear un proyecto Django
  3. Ejecute el servidor Django para verificar que el servidor funcione correctamente o no.

Configurar una aplicación Django

A. Ejecute el siguiente comando para crear una aplicación Django con nombre FilterApp.

$ python3 gestionar.py startapp filterapp

B. Ejecute el siguiente comando para crear el usuario para acceder a la base de datos Django. Si ha creado el usuario antes, no es necesario ejecutar el comando.

$ python3 gestionar.py createuperuser

C. Agregue el nombre de la aplicación en el Instalado_app parte de py archivo.

Instalado_apps = [

'FilterApp'
]

D. Crea una carpeta llamada plantillas dentro de FilterApp carpeta y configure el plantillas ubicación de la aplicación en el PLANTILLAS parte de py archivo.

Plantillas = [

… .
'Dirs': ['/home/fahmida/django_pro/filterapp/plantlates']],
… .
,
]

Crear un modelo para la tabla de base de datos

Abre el modelos.py archivo del FilterApp carpeta y agregue el siguiente script para definir la estructura de empleados mesas. Empleado La clase se define para crear una tabla llamada empleados con nombre, publicación, correo electrónico, departamento, y dia de ingreso campos. Aquí, Nombre, publicación, y departamento Los campos almacenarán datos de personajes, el correo electrónico el campo almacenará la dirección de correo electrónico y el dia de ingreso el campo almacenará datos de fecha.

modelos.py

# Módulo de importación de modelos
de Django.Modelos de importación de DB
# Definir clase para crear la tabla de empleados
Empleado de clase (modelos.Modelo):
nombre = modelos.Charfield (max_length = 50)
post = modelos.Charfield (max_length = 40)
correo electrónico = modelos.Emailfield ()
Departamento = modelos.Charfield (max_length = 30)
Joinning_date = modelos.DateField ()

Ejecutar el makemigraciones Comando para crear una nueva migración basada en los cambios realizados por los modelos.

$ python3 gestionar.Py Makemigrations FilterApp

Ejecutar el emigrar comando para ejecutar los comandos SQL y crear todas las tablas en la base de datos que se definen en el modelos.py archivo.

$ python3 gestionar.PY migra

Modificar el contenido del administración.py Archivo con el siguiente contenido. Aquí, el empleado La clase de los modelos se registra utilizando el registro() método para mostrar el Registros de empleados Tablas en el tablero de la administración de Django.

administración.py

# Importar el módulo de administración
de Django.administrador de importación de contribución
# Importar modelo de empleado
de .Modelos Importar empleado
# Registre el modelo de empleado
administración.sitio.Registrarse (Empleado)

Ejecute la siguiente URL para abrir la página de inicio de sesión de administrador de Django. Proporcionar el nombre de usuario y la contraseña válidos para abrir el Panel de administración de Django Para acceder a las tablas de la base de datos.

Inserte dos o más registros de empleados para aplicar el filtro en los datos. Aquí se insertan cinco registros.

Crear el buscar.html archivo dentro del FilterApp/plantillas/ carpeta con el siguiente script. Los datos del empleado La tabla se mostrará en este archivo de plantilla. para el bucle se usa para leer el contenido del Object_list variable que se pasará desde el archivo de vista. El Nombre, publicación, y departamento valores de la empleados La tabla se mostrará utilizando la lista.

buscar.html

<br>Tutorial de filtro Django<br>

Lista de empleados



    % para EMP en Object_List %

  1. EMP.nombre (EMP.correo )


    EMP.Departamento Departamento



  2. % endfor %

Abre el puntos de vista.py archivo del FilterApp carpeta y modificar el contenido del archivo con el siguiente script. Los nombres de modelo y plantilla se definen en el script.

puntos de vista.py

# Módulo de importación de ListView
de Django.puntos de vista.View genérico de importación
# Importar módulo de empleado
de .Modelos Importar empleado
# Importar m módulo
de Django.db.Modelos importar Q
# Definir clase para filtrar datos
Class SearchEmployee (ListView):
# Definir modelo
modelo = empleado
# Definir plantilla
Template_name = 'Buscar.html '

Modificar el contenido del URLS.py Archivo con el siguiente contenido. En el guión, el 'búsqueda'El camino se define para llamar al SearchEmloyeee.as_view () método que enviará todos los datos y los datos filtrados del empleados tabla para el archivo de plantilla.

URLS.py

# Importar el módulo de administración
de Django.administrador de importación de contribución
# Importar ruta e incluir módulo
de Django.ruta de importación de URLS, incluir
# Importar el módulo de SearchEmployeee
De FilterApp.Vistas de importación SearchEmployeee
urlpatterns = [
# Defina la ruta para el administrador
ruta ('admin/', administrador.sitio.URLS),
# Defina la ruta para la búsqueda
ruta ('Searchemp/', SearchEmployee.as_view ()),
]

La siguiente salida aparecerá sin aplicar ningún filtrado para la siguiente URL.

http: // localhost: 8000/Serachemp

Filtro de datos por filtrado simple

Agregue la siguiente línea al final del puntos de vista.py archivo para filtrar los registros del empleados tabla donde el valor del correo el campo es 'Contador'.

# Aplicar filtrado básico
QuerySet = empleado.objetos.filtro (post = 'contador')

La siguiente salida aparecerá después de aplicar un filtrado básico.

Filtrar datos con múltiples campos

Agregue la siguiente línea al final del puntos de vista.py archivo para filtrar los registros del empleados tabla donde el valor del departamento el campo es 'HT' y el correo electrónico el campo es '[email protected] '.

# Aplicar filtrado con múltiples campos
QuerySet = empleado.objetos.filtro (departamento = 'hr', correo electrónico = '[email protected] ')

La siguiente salida aparecerá después de aplicar un filtrado múltiple.

Filtrar datos con objeto Q

Agregue la siguiente línea al final del puntos de vista.py archivo para filtrar los registros del empleados tabla donde el valor del correo el campo es 'Gerente'o el valor del departamento el campo es 'Ventas'.

# Aplicar el filtrado utilizando objetos Q
QuerySet = empleado.objetos.Filtro (q (post = 'gerente') | q (departamento = 'ventas'))

La siguiente salida aparecerá después de aplicar el filtrado de objetos Q.

Datos de filtro utilizando el encadenamiento del filtro

Agregue la siguiente línea al final del puntos de vista.py archivo para filtrar los registros del empleados tabla donde el valor del departamento el campo se verificará primero y si devuelve verdadero, entonces el valor del nombre el campo será comprobado.

# Aplicar el filtrado al encadenar
QuerySet = empleado.objetos.Filtro (departamento = 'HR').Filtro (nombre = 'Mehrab Hossain')

La siguiente salida aparecerá después de aplicar el encadenamiento del filtro.

Conclusión

Los datos se pueden filtrar en Django de muchas maneras en función de los requisitos de la aplicación. En este tutorial se explicaron cuatro formas diferentes de filtrado para comprender los conceptos básicos del filtrado de django. Estos son filtrado simple, filtrado múltiple, filtrado con objeto Q y encadenamiento de filtros.