From b93cd82297109efe2765dd03e8402fdc2c0cc156 Mon Sep 17 00:00:00 2001 From: Jacob Kaplan-Moss Date: Sat, 4 Nov 2006 23:30:27 +0000 Subject: [PATCH] [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 --- django/db/backends/oracle/query.py | 9 +++++++++ django/db/models/query.py | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) 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().