No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

0D
14H
20M
58S
Curso Básico de Django

Curso Básico de Django

Facundo García Martoni

Facundo García Martoni

El método filter

15/29
Recursos

Aportes 12

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Les comparto algunos campos de búsquedas que encontré en la documentación:
|
__gt = Mayor que
__gte = Mayor o igual que
__lt = Menor que
__lte = Menos o igual que
__startswith = Empieza con
__endswith = Termina con
|
Les dejo el link donde podrán ver otros método para la búsqueda https://docs.djangoproject.com/en/4.0/ref/models/querysets/#field-lookups

Para resaltar:
el método filter es para traer una lista de objetos que cumplan con los parámetros de consulta que se proporcionan. Si no hay objetos, igual te entrega una lista vacía.

A diferencia, el método get, es para obtener un sólo objeto y podrás modificar sus atributos porque no estás trabajando sobre una lista sino sobre la instancia de un modelo. Si no hay algun objeto que cumpla con los parámetros de consulta, te saltará un error, es por esto que siempre se meneja dentro de un try-except.

Tip: Si sólo necesitas confirmar que existe un objeto y estás seguro que sólo habrá no más de uno y no necesitas modificar sus atributos, puedes usar el método filter() y el método exists(). Ejemplo:
Question.objects.filter(pk=1).exists()
Esto te dará un True o False.
Pero si necesitas modificar algún parámetro, obligatoriamente debes usar el get con un try-except.

Para no olvidar del método filter:

Model.objects.filter(condición) --> devuelve una lista de objetos

  • El método get solo nos devuelve un resultado (objeto) que coincida con la consulta.

  • El método filter nos devuelve un conjunto de objetos (lista) que cumplan con la condición.

Demasiado buena esta clase

El método filter

>>> Question.objects.filter(pk=1)
<QuerySet [<Question: ¿Cuál es el mejor curso de Platzi?>]>
>>> Question.objects.filter(pk=2)
<QuerySet [<Question: ¿Quién es el mejor profesor de Platzi?>]>
>>> Question.objects.filter(pk=4)
<QuerySet []>
>>> Question.objects.filter(question_text__startswith='¿Cuál')
<QuerySet [<Question: ¿Cuál es el mejor curso de Platzi?>, <Question: ¿Cuál es la mejor escuela de Platzi?>]>
>>> Question.objects.filter(pub_date__year=timezone.now().year)
<QuerySet [<Question: ¿Cuál es el mejor curso de Platzi?>, <Question: ¿Quién es el mejor profesor de Platzi?>, <Question: ¿Cuál es la mejor
escuela de Platzi?>]>
>>>

GET => Puede traducirse como un “select * from where id= ***” en SQL
FILTER => Puede traducirse como un “select * from table” sin el WHERE

EL “*” vendria hacer el atributo que pones dentro del paréntesis.

El manejo de objetos es vital.
Ahora las consultas de este tipo son muy constantes, así que aprende con sabiduría

Filtrando los objetos creados desde la consola interactiva

Para traer un objeto en específicos de las clases ORM podemos usar Question.object.get(pk=1) (el comando get sólo devuelve un valor)

Para obtener múltiples respuestas podemos usar Question.objects.filter(question_text__startswith="¿Cual") este método devuelve un QuerySet
Otro ejemplo: Question.objects.filter(pub_date__year=timezone.now().year)

Mi gitHub

Buen curso

excelente a la hora de trabajar con filter

Ejemplo del filter

>>> Question.objects.filter(pk=1)
<QuerySet [<Question: Cual es el mejor curso de platzi?>]>
>>> Question.objects.filter(pk=2)
<QuerySet [<Question: Quien es el mejor profesor de Platzi?>]>
>>> Question.objects.filter(pk=)

//Cuando se le pasa un objeto que no existe solo lo devuelve vacio el get devuelve un error
>>> Question.objects.filter(pk=4)
<QuerySet []>