def get_or_none(self, prefetch_related=None, select_related=False,
                    **kwargs):
        """Gets a single object based on kwargs or None if one is not found.

        :param prefetch_related: list or tuple of fields to prefetch for an
            object.  This takes precedence over select_related.

            Example:

            >> get_or_none(prefetch_related=['some_field',
            ...                              'some_field__some_fields_field'])

            See:
            https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

        :param select_related: boolean when set to True will follow foreign-key
            relationships to prevent many db queries when looping over foreign
            keys. If this value is boolean True, the immediate foreign keys
            will be selected, but not foreign keys of foreign keys.  If this
            value is set to a list or tuple, then those will be the fields to
            to follow and select.

            Example:

            >> # Both of the following are valid
            >> get_or_none(select_related=True)
            >> get_or_none(select_related=['some_field',
            ...                            'some_field__some_fields_field'])

            See: https://docs.djangoproject.com/en/dev/ref/models/querysets/
        :param kwargs: list of fields and their values to retrieve.

        """
        try:
            if prefetch_related:
                query_set = self.prefetch_related(*prefetch_related)
            elif select_related == True:
                query_set = self.select_related()
            elif isinstance(select_related, (list, tuple)):
                query_set = self.select_related(*select_related)
            else:
                query_set = self

            return query_set.get(**kwargs)
        except self.model.DoesNotExist:
            return None
Gets a single object based on kwargs or None if one is not found.

        :param prefetch_related: list or tuple of fields to prefetch for an
            object.  This takes precedence over select_related.

            Example:

            >> get_or_none(prefetch_related=['some_field',
            ...                              'some_field__some_fields_field'])

            See:
            https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

        :param select_related: boolean when set to True will follow foreign-key
            relationships to prevent many db queries when looping over foreign
            keys. If this value is boolean True, the immediate foreign keys
            will be selected, but not foreign keys of foreign keys.  If this
            value is set to a list or tuple, then those will be the fields to
            to follow and select.

            Example:

            >> # Both of the following are valid
            >> get_or_none(select_related=True)
            >> get_or_none(select_related=['some_field',
            ...                            'some_field__some_fields_field'])

            See: https://docs.djangoproject.com/en/dev/ref/models/querysets/
        :param kwargs: list of fields and their values to retrieve.