How do I get the object if it exists, or None if it does not exist in Django?
There is no 'built in' way to do this. Django will raise the DoesNotExist exception every time.The idiomatic way to handle this in python is to wrap it in a try catch:
try: go = SomeModel.objects.get(foo='bar')except SomeModel.DoesNotExist: go = None
What I did do, is to subclass models.Manager, create a
safe_get like the code above and use that manager for my models. That way you can write:
Since django 1.6 you can use first() method like so:
DoesNotExistexception if an object is not found for the given parameters. This exception is also an attribute of the model class. The
DoesNotExistexception inherits from
You can catch the exception and assign
None to go.
from django.core.exceptions import ObjectDoesNotExisttry: go = Content.objects.get(name="baby")except ObjectDoesNotExist: go = None