Changeset 7244
- Timestamp:
- 03/14/08 20:59:06 (8 months ago)
- Files:
-
- django/branches/queryset-refactor/django/db/models/fields/related.py (modified) (2 diffs)
- django/branches/queryset-refactor/django/db/models/query_utils.py (modified) (1 diff)
- django/branches/queryset-refactor/django/db/models/sql/where.py (modified) (2 diffs)
- django/branches/queryset-refactor/tests/modeltests/or_lookups/models.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/queryset-refactor/django/db/models/fields/related.py
r7173 r7244 3 3 from django.db.models.fields import AutoField, Field, IntegerField, PositiveIntegerField, PositiveSmallIntegerField, get_ul_class 4 4 from django.db.models.related import RelatedObject 5 from django.db.models.query_utils import QueryWrapper 5 6 from django.utils.text import capfirst 6 7 from django.utils.translation import ugettext_lazy, string_concat, ungettext, ugettext as _ … … 139 140 if hasattr(value, 'as_sql'): 140 141 sql, params = value.as_sql() 141 return ('(%s)' % sql), params142 return QueryWrapper(('(%s)' % sql), params) 142 143 if lookup_type == 'exact': 143 144 return [pk_trace(value)] django/branches/queryset-refactor/django/db/models/query_utils.py
r7169 r7244 15 15 """ 16 16 pass 17 18 class QueryWrapper(object): 19 """ 20 A type that indicates the contents are an SQL fragment and the associate 21 parameters. Can be used to pass opaque data to a where-clause, for example. 22 """ 23 def __init__(self, sql, params): 24 self.data = sql, params 17 25 18 26 class Q(tree.Node): django/branches/queryset-refactor/django/db/models/sql/where.py
r7217 r7244 7 7 from django.db import connection 8 8 from django.db.models.fields import Field 9 from django.db.models.query_utils import QueryWrapper 9 10 from datastructures import EmptyResultSet, FullResultSet 10 11 … … 111 112 else: 112 113 params = Field().get_db_prep_lookup(lookup_type, value) 113 if isinstance(params, tuple):114 extra, params = params 114 if isinstance(params, QueryWrapper): 115 extra, params = params.data 115 116 else: 116 117 extra = '' django/branches/queryset-refactor/tests/modeltests/or_lookups/models.py
r6518 r7244 71 71 >>> Article.objects.filter(pk__in=[1,2,3]) 72 72 [<Article: Hello>, <Article: Goodbye>, <Article: Hello and goodbye>] 73 >>> Article.objects.filter(pk__in=(1,2,3)) 74 [<Article: Hello>, <Article: Goodbye>, <Article: Hello and goodbye>] 73 75 74 76 >>> Article.objects.filter(pk__in=[1,2,3,4])
