Pitón

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 la hace más fácil de usar.  El marco de Django tiene un filtrar() método para filtrar datos de las tablas de la base de datos. Una tabla puede contener muchos registros y, a veces, se requieren determinados 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. En este tutorial se discutirá cómo se pueden filtrar los datos de una tabla de base de datos utilizando el método de filtro de cuatro formas diferentes.

Prerrequisitos

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

  1. Instale Django versión 3+ en Ubuntu 20+ (preferiblemente)
  2. Crea un proyecto de Django
  3. Ejecute el servidor Django para comprobar si el servidor funciona correctamente o no.

Configurar una aplicación Django

A. Ejecute el siguiente comando para crear una aplicación Django llamada aplicación de filtro.

$ python3 administrar.py startapp filterapp

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

$ python3 administrar.py crea superusuario

C. Agregue el nombre de la aplicación en el INSTALLED_APP parte de py expediente.

INSTALLED_APPS = [
..
'filterapp'
]

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

PLANTILLAS = [

.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
.. .
,
]

Crear un modelo para la tabla de la base de datos

Abre el modelos.py archivo de la aplicación de filtro 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 caracteres, Email 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 tabla de empleados
clase Empleado (modelos.Modelo):
nombre = modelos.CharField (longitud_máxima = 50)
post = modelos.CharField (longitud_máxima = 40)
email = modelos.EmailField ()
departamento = modelos.CharField (longitud_máxima = 30)
joinning_date = modelos.DateField ()

Ejecutar el hacer migraciones comando para crear una nueva migración basada en los cambios realizados por los modelos.

$ python3 administrar.py makemigrations filterapp

Ejecutar el emigrar comando para ejecutar los comandos SQL y crear todas las tablas en la base de datos que están definidas en el modelos.py expediente.

$ python3 administrar.py migrar

Modificar el contenido del administración.py archivo con el siguiente contenido. Aquí, el empleado La clase de los modelos se registra usando el registro() método para mostrar el registros de empleados tablas en el panel de administración de Django.

administración.py

# Importar módulo de administración
de django.administrador de importación de contribuciones
# Importar modelo de empleado
de .importación de modelos Empleado
# Registrar modelo de empleado
administración.sitio.registrarse (empleado)

Ejecute la siguiente URL para abrir la página de inicio de sesión del administrador de Django. Proporcione 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 a los datos. Aquí se insertan cinco registros.

Crea el buscar.html archivo dentro del filterapp / templates / carpeta con el siguiente script. Los datos del empleado La tabla se mostrará en este archivo de plantilla. por bucle se utiliza para leer el contenido de la lista_objetos variable que se pasará desde el archivo de vista. La nombre, publicación, y Departamento valores de la empleados La tabla se mostrará mediante el uso de la lista.

buscar.html

<br>Tutorial de filtro de 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 de la aplicación de filtro carpeta y modifique el contenido del archivo con el siguiente script. Los nombres de modelo y plantilla se definen en el script.

puntos de vista.py

# Importar módulo ListView
de django.puntos de vista.ListView de importación genérico
# Módulo de importación de empleados
de .importación de modelos Empleado
# Importar módulo Q
de django.db.modelos importan Q
# Definir clase para filtrar datos
clase 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 'searchEmp'ruta está definida para llamar al BuscarEmpleado.as_view () método que enviará todos los datos y los datos filtrados del empleados tabla al archivo de plantilla.

urls.py

# Importar módulo de administración
de django.administrador de importación de contribuciones
# Importar ruta e incluir módulo
de django.ruta de importación de URL, incluir
# Importar módulo SearchEmployee
de filterapp.vistas importar SearchEmployee
urlpatterns = [
# Definir la ruta para el administrador
ruta ('admin /', admin.sitio.urls),
# Definir la ruta de búsqueda
ruta ('searchEmp /', SearchEmployee.as_view ()),
]

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

http: // localhost: 8000 / SerachEmp

Filtrar datos por filtrado simple

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

# Aplicar filtrado básico
queryset = Empleado.objetos.filter (post = 'Contador')

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

Filtrar datos con varios campos

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

# Aplicar filtrado con múltiples campos
queryset = Empleado.objetos.filtro (departamento = 'RRHH', correo electrónico = '[correo electrónico protegido]')

La siguiente salida aparecerá después de aplicar varios filtros.

Filtrar datos con objeto Q

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

# Aplicar filtrado usando objetos Q
queryset = Empleado.objetos.filter (Q (puesto = 'Gerente') | Q (departamento = 'Ventas'))

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

Filtrar datos mediante el encadenamiento de filtros

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

# Aplicar filtrado encadenando
queryset = Empleado.objetos.filtro (departamento = 'RRHH').filtro (nombre = 'Mehrab Hossain')

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

Conclusión

Los datos se pueden filtrar en Django de muchas formas según 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 el filtrado simple, el filtrado múltiple, el filtrado con objeto Q y el encadenamiento de filtros.

Cómo descargar y jugar Sid Meier's Civilization VI en Linux
Introducción al juego Civilization 6 es una versión moderna del concepto clásico introducido en la serie de juegos Age of Empires. La idea era bastant...
Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...