Django

Code

Changeset 7244

Show
Ignore:
Timestamp:
03/14/08 20:59:06 (8 months ago)
Author:
mtredinnick
Message:

queryset-refactor: Fixed the "in" lookup type when using tuples.
Accidentally broken in r7170. Fixed #6772.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/queryset-refactor/django/db/models/fields/related.py

    r7173 r7244  
    33from django.db.models.fields import AutoField, Field, IntegerField, PositiveIntegerField, PositiveSmallIntegerField, get_ul_class 
    44from django.db.models.related import RelatedObject 
     5from django.db.models.query_utils import QueryWrapper 
    56from django.utils.text import capfirst 
    67from django.utils.translation import ugettext_lazy, string_concat, ungettext, ugettext as _ 
     
    139140        if hasattr(value, 'as_sql'): 
    140141            sql, params = value.as_sql() 
    141             return ('(%s)' % sql), params 
     142            return QueryWrapper(('(%s)' % sql), params) 
    142143        if lookup_type == 'exact': 
    143144            return [pk_trace(value)] 
  • django/branches/queryset-refactor/django/db/models/query_utils.py

    r7169 r7244  
    1515    """ 
    1616    pass 
     17 
     18class 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 
    1725 
    1826class Q(tree.Node): 
  • django/branches/queryset-refactor/django/db/models/sql/where.py

    r7217 r7244  
    77from django.db import connection 
    88from django.db.models.fields import Field 
     9from django.db.models.query_utils import QueryWrapper 
    910from datastructures import EmptyResultSet, FullResultSet 
    1011 
     
    111112        else: 
    112113            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 
    115116        else: 
    116117            extra = '' 
  • django/branches/queryset-refactor/tests/modeltests/or_lookups/models.py

    r6518 r7244  
    7171>>> Article.objects.filter(pk__in=[1,2,3]) 
    7272[<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>] 
    7375 
    7476>>> Article.objects.filter(pk__in=[1,2,3,4])