summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2006-11-04 23:30:27 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2006-11-04 23:30:27 +0000
commitb93cd82297109efe2765dd03e8402fdc2c0cc156 (patch)
tree4ad11d41fc9cf24e668bfb45d52cd9da84d65955
parent3e1197f82e4c0ba3c4f7a899d8f60a9ea731504f (diff)
[boulder-oracle-sprint] added logic to load a custom QuerySet class from the database backend, if defined. Also added a skeletal Oracle QuerySet.
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4000 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/backends/oracle/query.py9
-rw-r--r--django/db/models/query.py12
2 files changed, 20 insertions, 1 deletions
diff --git a/django/db/backends/oracle/query.py b/django/db/backends/oracle/query.py
index e69de29bb2..b66a6268ef 100644
--- a/django/db/backends/oracle/query.py
+++ b/django/db/backends/oracle/query.py
@@ -0,0 +1,9 @@
+def get_query_set_class(DefaultQuerySet):
+ """
+ Create a custom QuerySet class for Oracle.
+ """
+
+ class OracleQuerySet(DefaultQuerySet):
+ pass
+
+ return OracleQuerySet \ No newline at end of file
diff --git a/django/db/models/query.py b/django/db/models/query.py
index fd9465ee5c..9520924870 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1,3 +1,4 @@
+from django import db
from django.db import backend, connection, transaction
from django.db.models.fields import DateField, FieldDoesNotExist
from django.db.models import signals
@@ -74,7 +75,7 @@ def quote_only_if_word(word):
else:
return backend.quote_name(word)
-class QuerySet(object):
+class _QuerySet(object):
"Represents a lazy database lookup for a set of objects"
def __init__(self, model=None):
self.model = model
@@ -556,6 +557,15 @@ class QuerySet(object):
full_query = None
return select, " ".join(sql), params, full_query
+
+# Check to see if the DB backend would like to define its own QuerySet class
+# and otherwise use the default.
+backend_query_module = db.get_query_module()
+if hasattr(backend_query_module, "get_query_set_class"):
+ QuerySet = db.get_query_module().get_query_set_class(_QuerySet)
+else:
+ QuerySet = _QuerySet
+
class ValuesQuerySet(QuerySet):
def iterator(self):
# select_related and select aren't supported in values().