Filtro OR de Django

Salman Mehmood 15 febrero 2024
Filtro OR de Django

Aprenderemos con esta rápida y fácil explicación sobre cómo ejecutar filtros con una declaración OR individualmente, y también veremos cómo ejecutamos los filtros con un objeto Q en el queryset de Django.

Use el filtro para ejecutar la declaración OR individualmente y con el objeto Q en Django Queryset

En este ejemplo, usaremos la base de datos que creamos que se ha agregado con algunos datos y le mostraremos cómo se ve.

Tabla de datos de muestra

Creamos un ejemplo básico; crearemos una variable llamada posts y guardaremos todos los datos dentro de esta variable. Ejecutaremos un filtro que nos permitirá crear una simple declaración OR.

Primero, debemos seleccionar sobre qué queremos hacer una declaración O, así que recopilemos todos los nombres de los estudiantes, comenzando con austin o baldwin.

Estamos usando el argumento surname__startswith y pasándolo por apellido para extraer todos los registros de estudiantes que comienzan con los apellidos austin y baldwin.

extraer todos los registros de los estudiantes con o

Cuando ejecutamos el servidor, vemos que devolvió dos elementos.

salida del primer código

Hemos visto un ejemplo básico con una declaración OR, pero podríamos agregar otro filtro y más declaraciones OR. Ahora trabajaremos en un ejemplo más del uso de una declaración OR, pero esta vez estamos usando un objeto Q.

Esta no es una demostración detallada de un objeto de cola, pero diremos que nos permite construir consultas más complejas utilizando objetos Q. Le mostraremos un ejemplo de utilización de objetos Q.

La instrucción del código es casi la misma, solo vamos a envolver todo alrededor de un objeto Q, y después de | operador, añadiremos otro objeto Q. No necesitamos agregar Student.objects.filter() nuevamente.

Deberíamos haber escrito esto primero y pasar el apellido al argumento surname__startswith.

extraer todos los registros de los estudiantes con o y q

Avancemos y ejecutemos esta consulta, de modo que obtengamos los mismos resultados.

salida del segundo código

Si queremos extender esto, podemos seguir agregando a esta declaración OR tantas veces como queramos. Agregamos el no ~Q, que significa seleccionar a todos los estudiantes excepto donde el apellido comienza con baldwin.

extraer todos los registros de los estudiantes con o y no q

Ahora podemos ver que ya no se muestra todo baldwin porque definimos ~, que se usa para eliminar o no seleccionar un elemento de la base de datos.

salida del tercer código

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