From b4b9edc5e55f32356928ce10defa92c8e1dab4f4 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Tue, 11 Jul 2006 02:32:53 +0000 Subject: [PATCH] Fixed #1614 -- get_sql(), lookup_inner() and parse_lookup() no longer return a 'tables' parameter, because 'tables' was never getting assigned, anywhere. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3317 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/query.py | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/django/db/models/query.py b/django/db/models/query.py index 6d3acef703..ddc29314a5 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -441,8 +441,7 @@ class QuerySet(object): params = self._params[:] # Convert self._filters into SQL. - tables2, joins2, where2, params2 = self._filters.get_sql(opts) - tables.extend(tables2) + joins2, where2, params2 = self._filters.get_sql(opts) joins.update(joins2) where.extend(where2) params.extend(params2) @@ -570,16 +569,15 @@ class QOperator(object): self.args = args def get_sql(self, opts): - tables, joins, where, params = [], SortedDict(), [], [] + joins, where, params = SortedDict(), [], [] for val in self.args: - tables2, joins2, where2, params2 = val.get_sql(opts) - tables.extend(tables2) + joins2, where2, params2 = val.get_sql(opts) joins.update(joins2) where.extend(where2) params.extend(params2) if where: - return tables, joins, ['(%s)' % self.operator.join(where)], params - return tables, joins, [], params + return joins, ['(%s)' % self.operator.join(where)], params + return joins, [], params class QAnd(QOperator): "Encapsulates a combined query that uses 'AND'." @@ -630,9 +628,9 @@ class QNot(Q): self.q = q def get_sql(self, opts): - tables, joins, where, params = self.q.get_sql(opts) + joins, where, params = self.q.get_sql(opts) where2 = ['(NOT (%s))' % " AND ".join(where)] - return tables, joins, where2, params + return joins, where2, params def get_where_clause(lookup_type, table_prefix, field_name, value): if table_prefix.endswith('.'): @@ -706,7 +704,7 @@ def parse_lookup(kwarg_items, opts): # At present, this method only every returns INNER JOINs; the option is # there for others to implement custom Q()s, etc that return other join # types. - tables, joins, where, params = [], SortedDict(), [], [] + joins, where, params = SortedDict(), [], [] for kwarg, value in kwarg_items: if value is not None: @@ -733,12 +731,11 @@ def parse_lookup(kwarg_items, opts): if len(path) < 1: raise TypeError, "Cannot parse keyword query %r" % kwarg - tables2, joins2, where2, params2 = lookup_inner(path, clause, value, opts, opts.db_table, None) - tables.extend(tables2) + joins2, where2, params2 = lookup_inner(path, clause, value, opts, opts.db_table, None) joins.update(joins2) where.extend(where2) params.extend(params2) - return tables, joins, where, params + return joins, where, params class FieldFound(Exception): "Exception used to short circuit field-finding operations." @@ -758,7 +755,7 @@ def find_field(name, field_list, related_query): return matches[0] def lookup_inner(path, clause, value, opts, table, column): - tables, joins, where, params = [], SortedDict(), [], [] + joins, where, params = SortedDict(), [], [] current_opts = opts current_table = table current_column = column @@ -878,9 +875,8 @@ def lookup_inner(path, clause, value, opts, table, column): join_column = None # There are name queries remaining. Recurse deeper. - tables2, joins2, where2, params2 = lookup_inner(path, clause, value, new_opts, new_table, join_column) + joins2, where2, params2 = lookup_inner(path, clause, value, new_opts, new_table, join_column) - tables.extend(tables2) joins.update(joins2) where.extend(where2) params.extend(params2) @@ -925,7 +921,7 @@ def lookup_inner(path, clause, value, opts, table, column): where.append(get_where_clause(clause, current_table + '.', column, value)) params.extend(field.get_db_prep_lookup(clause, value)) - return tables, joins, where, params + return joins, where, params def delete_objects(seen_objs): "Iterate through a list of seen classes, and remove any instances that are referred to"