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().