se si desidera solo per ottenere una singola istanza, utilizzare get
, non filter
:
employee = Employee.objects.get(age = 99)
Se questo non esiste , riceverai un'eccezione Employee.DoesNotExist
, che dovrai catturare. Se c'è più di un dipendente di 99 anni, riceverai un'eccezione Employee.MultipleObjectsReturned, che potresti voler rilevare.
C'è sempre django-annoying 's get_object_or_None
se ti senti pigro!
from annoying.functions import get_object_or_None
obj = get_object_or_None(Employee, age=99)
Se non si desidera utilizzare tutti django-fastidioso, si può sempre aggiungere get_object_or_None
da qualche parte, sembra proprio così:
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
fonte
2011-01-18 10:28:55
BTW, prova a non provare a bloccare il blocco. – user469652
http://stackoverflow.com/questions/4722375/how-to-represent-and-in-django-orm-query..... dovresti modificare le tue vecchie domande invece di chiederne di nuove – crodjer