Django

Code

Changeset 7445

Show
Ignore:
Timestamp:
04/23/08 04:26:14 (5 months ago)
Author:
mtredinnick
Message:

queryset-refactor: Removed an unwanted side-effect from the Query.as_sql() method.

Fixed #7056

Files:

Legend:

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

    r7439 r7445  
    88""" 
    99 
    10 import itertools 
    1110from copy import deepcopy 
    1211 
     
    6766        self.distinct = False 
    6867        self.select_related = False 
     68        self.related_select_cols = [] 
    6969 
    7070        # Arbitrary maximum limit for select_related. Prevents infinite 
     
    151151        obj.distinct = self.distinct 
    152152        obj.select_related = self.select_related 
     153        obj.related_select_cols = [] 
    153154        obj.max_depth = self.max_depth 
    154155        obj.extra_select = self.extra_select.copy() 
     
    184185        obj.clear_limits() 
    185186        obj.select_related = False 
     187        obj.related_select_cols = [] 
    186188        if obj.distinct and len(obj.select) > 1: 
    187189            obj = self.clone(CountQuery, _query=obj, where=self.where_class(), 
     
    346348        if not self.tables: 
    347349            self.join((None, self.model._meta.db_table, None, None)) 
    348         if self.select_related
     350        if self.select_related and not self.related_select_cols
    349351            self.fill_related_selections() 
    350352 
     
    372374            result.extend(cols) 
    373375            aliases.extend(cols) 
     376        for table, col in self.related_select_cols: 
     377            r = '%s.%s' % (qn(table), qn(col)) 
     378            result.append(r) 
     379            aliases.append(r) 
    374380 
    375381        self._select_aliases = set(aliases) 
     
    770776            opts = self.get_meta() 
    771777            root_alias = self.get_initial_alias() 
    772             self.select.extend(self.get_default_columns()) 
     778            self.related_select_cols = [] 
    773779        if not used: 
    774780            used = set() 
     
    803809                    promote=f.null) 
    804810            used.add(alias) 
    805             self.select.extend([(alias, f2.column) 
     811            self.related_select_cols.extend([(alias, f2.column) 
    806812                    for f2 in f.rel.to._meta.fields]) 
    807813            if restricted: 
     
    12791285                d = d.setdefault(part, {}) 
    12801286        self.select_related = field_dict 
     1287        self.related_select_cols = [] 
    12811288 
    12821289    def add_extra(self, select, select_params, where, params, tables, order_by):