Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 7359)
+++ django/db/models/query.py	(working copy)
@@ -16,7 +16,7 @@
 # Pull into this namespace for backwards compatibility
 EmptyResultSet = sql.EmptyResultSet
 
-class _QuerySet(object):
+class BaseQuerySet(object):
     "Represents a lazy database lookup for a set of objects"
     def __init__(self, model=None, query=None):
         self.model = model
@@ -470,7 +470,13 @@
             except StopIteration:
                 self._iter = None
 
-# Use the backend's QuerySet class if it defines one. Otherwise, use _QuerySet.
+# Use the backend's QuerySet class if it defines one. Otherwise, use 
+# the BaseQuerySet subclass defined in settings.DEFAULT_QUERYSET_CLASS
+qs_path = settings.DEFAULT_QUERYSET_CLASS
+i = qs_path.rfind('.')
+module, attr = qs_path[:i], qs_path[i+1:]
+_QuerySet = getattr(__import__(module, {}, {}, ['']), attr)
+assert issubclass(_QuerySet, BaseQuerySet) # Must be a subclass of django.db.models.query.BaseQuerySet
 if connection.features.uses_custom_queryset:
     QuerySet = connection.ops.query_set_class(_QuerySet)
 else:
Index: django/conf/global_settings.py
===================================================================
--- django/conf/global_settings.py	(revision 7359)
+++ django/conf/global_settings.py	(working copy)
@@ -250,6 +250,9 @@
 # Hint: you really don't!
 TRANSACTIONS_MANAGED = False
 
+# The custom subclass of BaseQuerySet to use in place of all QuerySet instances.
+DEFAULT_QUERYSET_CLASS = 'django.db.models.query.BaseQuerySet'
+
 # The User-Agent string to use when checking for URL validity through the
 # isExistingURL validator.
 from django import get_version
Index: AUTHORS
===================================================================
--- AUTHORS	(revision 7359)
+++ AUTHORS	(working copy)
@@ -141,6 +141,7 @@
     Afonso Fernández Nogueira <fonzzo.django@gmail.com>
     Matthew Flanagan <http://wadofstuff.blogspot.com>
     Eric Floehr <eric@intellovations.com>
+    Eric Florenzano <floguy@gmail.com>
     Vincent Foley <vfoleybourgon@yahoo.ca>
     Rudolph Froger <rfroger@estrate.nl>
     Jorge Gajon <gajon@gajon.org>
Index: docs/settings.txt
===================================================================
--- docs/settings.txt	(revision 7359)
+++ docs/settings.txt	(working copy)
@@ -437,6 +437,16 @@
 Default tablespace to use for indexes on fields that don't specify
 one, if the backend supports it.
 
+DEFAULT_QUERYSET_CLASS
+----------------------
+
+**New in Django development version**
+
+Default: ``'django.db.models.query.BaseQuerySet'``
+
+Default QuerySet class to use for all operations.  Should inherit from
+``django.db.models.query.BaseQuerySet`` to provide custom functionality.
+
 DISALLOWED_USER_AGENTS
 ----------------------
 
