Django

Code

Changeset 7636

Show
Ignore:
Timestamp:
06/15/08 01:24:41 (5 months ago)
Author:
russellm
Message:

Fixed #7256 -- Corrected queryset code to return the correct set of columns when the query has an empty values() clause as well as extra selects from an extra() clause. Thanks to Nicolas Lara for the report and patch.

Files:

Legend:

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

    r7601 r7636  
    514514 
    515515    def iterator(self): 
    516         self.query.trim_extra_select(self.extra_names) 
     516        if (not self.extra_names and  
     517            len(self.field_names) != len(self.model._meta.fields)): 
     518            self.query.trim_extra_select(self.extra_names) 
    517519        names = self.query.extra_select.keys() + self.field_names 
    518520        for row in self.query.results_iter(): 
  • django/trunk/tests/regressiontests/queries/models.py

    r7575 r7636  
    507507>>> [sorted(d.items()) for d in dicts] 
    508508[[('id', 1), ('rank', 2)], [('id', 2), ('rank', 1)], [('id', 3), ('rank', 3)]] 
     509 
     510Bug #7256 
     511# An empty values() call includes all aliases, including those from an extra() 
     512>>> dicts = qs.values().order_by('id') 
     513>>> [sorted(d.items()) for d in dicts] 
     514[[('author_id', 2), ('good', 0), ('id', 1), ('rank', 2)], [('author_id', 3), ('good', 0), ('id', 2), ('rank', 1)], [('author_id', 1), ('good', 1), ('id', 3), ('rank', 3)]] 
    509515 
    510516Bugs #2874, #3002