'Fetch all references and convert to their document objects'

def _fetch_objects(self, doc_type=None):

    object_map = {}
    for (collection, dbrefs) in self.reference_map.iteritems():
        if hasattr(collection, 'objects'):
            col_name = collection._get_collection_name()
            refs = [dbref for dbref in dbrefs if ((col_name, dbref) not in object_map)]
            references = collection.objects.in_bulk(refs)
            for (key, doc) in references.iteritems():
                object_map[(col_name, key)] = doc
        else:
            if isinstance(doc_type, (ListField, DictField, MapField)):
                continue
            refs = [dbref for dbref in dbrefs if ((collection, dbref) not in object_map)]
            if doc_type:
                references = doc_type._get_db()[collection].find({'_id': {'$in': refs}})
                for ref in references:
                    doc = doc_type._from_son(ref)
                    object_map[(collection, doc.id)] = doc
            else:
                references = get_db()[collection].find({'_id': {'$in': refs}})
                for ref in references:
                    if ('_cls' in ref):
                        doc = get_document(ref['_cls'])._from_son(ref)
                    elif (doc_type is None):
                        doc = get_document(''.join((x.capitalize() for x in collection.split('_'))))._from_son(ref)
                    else:
                        doc = doc_type._from_son(ref)
                    object_map[(collection, doc.id)] = doc
    return object_map
