¿Cuál es la diferencia entre filtrar y obtener?
>>> Question.objects.filter(id=1) <QuerySet [<Question: What's new?>]> >>> Question.objects.get(pk=1) <Question: What's new?>La diferencia es que filter devuelve un objeto de conjunto de consultas, mientras que get devuelve el objeto requerido.
Si usa filter(), normalmente lo hace cada vez que espera más de un objeto que coincida con sus criterios. Si no se encontró ningún elemento que coincida con sus criterios, filter() devuelve un conjunto de consultas vacío sin arrojar un error.
Si usa get(), espera un elemento (y solo uno) que coincida con sus criterios. Obtener arroja un error si el elemento no existe o si existen varios elementos que coinciden con sus criterios. Por lo tanto, siempre debe usar if en un bloque try.. except .. o con una función de acceso directo como get_object_or_404 para manejar las excepciones correctamente.