Django

Code

Changeset 7287

Show
Ignore:
Timestamp:
03/18/08 07:46:40 (6 months ago)
Author:
mtredinnick
Message:

queryset-refactor: Fixed problems with values() queries across nullable relations.

Files:

Legend:

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

    r7285 r7287  
    11721172                        name.split(LOOKUP_SEP), opts, alias, False, allow_m2m, 
    11731173                        True) 
    1174                 self.select.append((joins[-1], target.column)) 
     1174                final_alias = joins[-1] 
     1175                col = target.column 
     1176                if len(joins) > 1: 
     1177                    join = self.alias_map[final_alias] 
     1178                    if col == join[RHS_JOIN_COL]: 
     1179                        self.unref_alias(final_alias) 
     1180                        final_alias = join[LHS_ALIAS] 
     1181                        col = join[LHS_JOIN_COL] 
     1182                        joins = joins[:-1] 
     1183                for join in joins[1:]: 
     1184                    # Only nullable aliases are promoted, so we don't end up 
     1185                    # doing unnecessary left outer joins here. 
     1186                    self.promote_alias(join) 
     1187                self.select.append((final_alias, col)) 
    11751188        except MultiJoin: 
    11761189            raise FieldError("Invalid field name: '%s'" % name)