django model utils
from django.db import models
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.
See also: https://gist.github.com/maxp/213294
"""
if isinstance(klass, type) and issubclass(klass, models.Model):
queryset = klass.objects.get_queryset()
elif isinstance(klass, models.Manager):
queryset = klass.get_queryset()
else:
queryset = klass
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
return None