Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

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 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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.

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 []>

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.