summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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().