To avoid an unfortunately common user-error, rename QuerySet.as_sql().

This was never a public API method, so this is backwards compatible, unless
you're poking at the internals. Refs #10352.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9928 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2009-03-01 04:12:30 +00:00
parent c6a404d1e9
commit 3242df16e4
3 changed files with 12 additions and 9 deletions

View File

@ -193,12 +193,15 @@ class Field(object):
def get_db_prep_lookup(self, lookup_type, value): def get_db_prep_lookup(self, lookup_type, value):
"Returns field's value prepared for database lookup." "Returns field's value prepared for database lookup."
if hasattr(value, 'as_sql'): if hasattr(value, 'as_sql') or hasattr(value, '_as_sql'):
# If the value has a relabel_aliases method, it will need to # If the value has a relabel_aliases method, it will need to
# be invoked before the final SQL is evaluated # be invoked before the final SQL is evaluated
if hasattr(value, 'relabel_aliases'): if hasattr(value, 'relabel_aliases'):
return value return value
sql, params = value.as_sql() try:
sql, params = value.as_sql()
except AttributeError:
sql, params = value._as_sql()
return QueryWrapper(('(%s)' % sql), params) return QueryWrapper(('(%s)' % sql), params)
if lookup_type in ('regex', 'iregex', 'month', 'day', 'week_day', 'search'): if lookup_type in ('regex', 'iregex', 'month', 'day', 'week_day', 'search'):

View File

@ -140,12 +140,15 @@ class RelatedField(object):
v = v[0] v = v[0]
return v return v
if hasattr(value, 'as_sql'): if hasattr(value, 'as_sql') or hasattr(value, '_as_sql'):
# If the value has a relabel_aliases method, it will need to # If the value has a relabel_aliases method, it will need to
# be invoked before the final SQL is evaluated # be invoked before the final SQL is evaluated
if hasattr(value, 'relabel_aliases'): if hasattr(value, 'relabel_aliases'):
return value return value
sql, params = value.as_sql() try:
sql, params = value.as_sql()
except AttributeError:
sql, params = value._as_sql()
return QueryWrapper(('(%s)' % sql), params) return QueryWrapper(('(%s)' % sql), params)
# FIXME: lt and gt are explicitally allowed to make # FIXME: lt and gt are explicitally allowed to make

View File

@ -703,12 +703,9 @@ class QuerySet(object):
self.query.add_fields(field_names, False) self.query.add_fields(field_names, False)
self.query.set_group_by() self.query.set_group_by()
def as_sql(self): def _as_sql(self):
""" """
Returns the internal query's SQL and parameters (as a tuple). Returns the internal query's SQL and parameters (as a tuple).
This is a private (internal) method. The name is chosen to provide
uniformity with other interfaces (in particular, the Query class).
""" """
obj = self.values("pk") obj = self.values("pk")
return obj.query.as_nested_sql() return obj.query.as_nested_sql()
@ -812,7 +809,7 @@ class ValuesQuerySet(QuerySet):
super(ValuesQuerySet, self)._setup_aggregate_query(aggregates) super(ValuesQuerySet, self)._setup_aggregate_query(aggregates)
def as_sql(self): def _as_sql(self):
""" """
For ValueQuerySet (and subclasses like ValuesListQuerySet), they can For ValueQuerySet (and subclasses like ValuesListQuerySet), they can
only be used as nested queries if they're already set up to select only only be used as nested queries if they're already set up to select only