From 7292cc8d60f9e993c26755456468cfd4cd8eb03e Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Wed, 19 Dec 2007 13:06:45 +0000 Subject: [PATCH] queryset-refactor: Reverted [6762] because it generates invalid SQL. It only worked accidentally with SQLite. Refs #4002. git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@6961 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/sql/query.py | 12 ++---------- django/db/models/sql/where.py | 6 +----- tests/regressiontests/queries/models.py | 8 -------- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 35dfbcb12f..2f7a08e4dd 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -723,16 +723,8 @@ class Query(object): opts = self.model._meta alias = self.join((None, opts.db_table, None, None)) - try: - field, target, unused, join_list = self.setup_joins(parts, opts, - alias, (connector == AND)) - except TypeError, e: - if len(parts) != 1 or parts[0] not in self.extra_select: - raise e - # Filtering on some alias from extra(select=...) - self.where.add([None, parts[0], None, lookup_type, value], - connector) - return + field, target, unused, join_list, = self.setup_joins(parts, opts, + alias, (connector == AND)) col = target.column alias = join_list[-1][-1] diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py index 97e6c38e6b..d361916953 100644 --- a/django/db/models/sql/where.py +++ b/django/db/models/sql/where.py @@ -5,7 +5,6 @@ import datetime from django.utils import tree from django.db import connection -from django.db.models.fields import Field from datastructures import EmptyResultSet # Connection types @@ -103,10 +102,7 @@ class WhereNode(tree.Node): else: format = '%s %s' - if field: - params = field.get_db_prep_lookup(lookup_type, value) - else: - params = Field().get_db_prep_lookup(lookup_type, value) + params = field.get_db_prep_lookup(lookup_type, value) if lookup_type in connection.operators: return (format % (field_sql, diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index e7e78e23cd..0404e9f9be 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -458,19 +458,11 @@ thus fail.) >>> Item.objects.extra(select=SortedDict(s), params=params).values('a','b')[0] {'a': u'one', 'b': u'two'} -Bug #4002 -Attributes used in extra(select=...) are available for use in subsequent -order_by() and filter() calls. - # Order by the number of tags attached to an item. >>> l = Item.objects.extra(select={'count': 'select count(*) from queries_item_tags where queries_item_tags.item_id = queries_item.id'}).order_by('-count') >>> [o.count for o in l] [2, 2, 1, 0] -# Filter those items that have exactly one tag attached. ->>> Item.objects.extra(select={'count': 'select count(*) from queries_item_tags where queries_item_tags.item_id = queries_item.id'}).filter(count=1) -[] - Bug #6154 Multiple filter statements are joined using "AND" all the time.