Si lo que desea es obtener una sola instancia, utilizar get
, no filter
:
employee = Employee.objects.get(age = 99)
Si eso no existe , obtendrá una excepción Employee.DoesNotExist
, que deberá atrapar. Si hay más de un empleado de 99 años, recibirá una excepción Employee.MultipleObjectsReturned, que es posible que desee atrapar.
¡Siempre hay django-annoying de get_object_or_None
si te sientes flojo!
from annoying.functions import get_object_or_None
obj = get_object_or_None(Employee, age=99)
Si no desea utilizar todos django-molesto, siempre se puede añadir get_object_or_None
en alguna parte, que sólo se ve así:
def get_object_or_None(klass, *args, **kwargs):
"""
Uses get() to return an object or None if the object does not exist.
klass may be a Model, Manager, or QuerySet object. All other passed
arguments and keyword arguments are used in the get() query.
Note: Like with get(), a MultipleObjectsReturned will be raised if
more than one object is found.
"""
queryset = _get_queryset(klass)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
return None
Por cierto, intente evitar try catch block. – user469652
http://stackoverflow.com/questions/4722375/how-to-represent-and-in-django-orm-query.....usted debería editar sus viejas preguntas en lugar de preguntar las nuevas – crodjer