2012-06-03 16 views
5

Gibt es eine Möglichkeit, die folgenden in einem Aufruf zu erreichen:Model.objects.get() oder None

Model.objects.get(id=1) else None 

Der einzige Weg, die ich gefunden habe, einen Weg, dies zu tun ist, indem Sie:

try: 
    object = Model... 
except: 
    object = None 

Gibt es eine Möglichkeit, dies in einem einzigen Aufruf in Django zu tun?

aktualisieren: Es scheint nicht ein Weg zu sein, um diese andere als in einem try/except Block zu tun, aber hier ist eine bessere Antwort: In Django, how do I objects.get, but return None when nothing is found?

+0

Nun, es scheint, dass Sie schon Ihre Frage gelöst . Als zusätzliches Argument verwenden Sie try: ... except (mit bestimmten Ausnahmen) wird in Python als eine gute Methode angesehen (ganz zu schweigen von Django, das mehr oder weniger der gleichen Philosophie folgt). –

+2

'(Model.objects.filter (pk = 1) oder [None]) [0]' ist weniger explizit, aber manchmal auch nützlich. – okm

+0

mögliches Duplikat von [In Django, wie mache ich objects.get, aber gebe None zurück, wenn nichts gefunden wird?] (Http://stackoverflow.com/questions/3090302/in-django-how-do-i-objects-get -aber-zurück-kein-wenn-nichts-ist-gefunden – congusbongus

Antwort

2

, wenn Sie es in einer Web-Anfrage verwenden, und Sie will 404 zurück, wenn das Objekt nicht vielleicht existiert Sie

get_object_or_404(Mode, pk=1) 
0

get_object_or_404

in Ihrem Modell zu tun verwenden sollte. . .

@models.permalink 
def get_absolute_url(self): 
    return "/blog/%s/" self.slug 
Verwandte Themen