docs: def get(self, *args, **kwargs):
          """
          Checks the cache to see if there's a cached entry for this pk. If not, fetches 
          using super then stores the result in cache.
   
          Most of the logic here was gathered from a careful reading of 
          ``django.db.models.sql.query.add_filter``
          """
          if self.query.where:
              # If there is any other ``where`` filter on this QuerySet just call
              # super. There will be a where clause if this QuerySet has already
              # been filtered/cloned.
              return super(CachingQuerySet, self).get(*args, **kwargs)
   
          # Punt on anything more complicated than get by pk/id only...
          if len(kwargs) == 1:
              k = kwargs.keys()[0]
              if k in ('pk', 'pk__exact', '%s' % self.model._meta.pk.attname, 
                       '%s__exact' % self.model._meta.pk.attname):
                  obj = cache.get(self.model._cache_key(pk=kwargs.values()[0]))
                  if obj is not None:
                      obj.from_cache = True
                      return obj
   
          # Calls self.iterator to fetch objects, storing object in cache.
          return super(CachingQuerySet, self).get(*args, **kwargs)