Django

Code

Changeset 8112

Show
Ignore:
Timestamp:
07/27/08 13:38:56 (5 months ago)
Author:
mtredinnick
Message:

Fixed #7886 -- Reordered some code in Query.results_iter() to ensure that all
the prequisites are correctly initialised prior to using them. Only affects
Oracle and other db backends requiring resolve_columns() (e.g. MS SQL?)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/models/sql/query.py

    r8107 r8112  
    198198        """ 
    199199        resolve_columns = hasattr(self, 'resolve_columns') 
    200         if resolve_columns: 
    201             if self.select_fields: 
    202                 fields = self.select_fields + self.related_select_fields 
    203             else: 
    204                 fields = self.model._meta.fields 
     200        fields = None 
    205201        for rows in self.execute_sql(MULTI): 
    206202            for row in rows: 
    207203                if resolve_columns: 
     204                    if fields is None: 
     205                        # We only set this up here because 
     206                        # related_select_fields isn't populated until 
     207                        # execute_sql() has been called. 
     208                        if self.select_fields: 
     209                            fields = self.select_fields + self.related_select_fields 
     210                        else: 
     211                            fields = self.model._meta.fields 
    208212                    row = self.resolve_columns(row, fields) 
    209213                yield row