Django

Code

Changeset 5122

Show
Ignore:
Timestamp:
04/28/07 10:09:41 (2 years ago)
Author:
mtredinnick
Message:

newforms-admin: Fixed #1576 -- Fixed SQL generation when using descending
ordering from related models. Based on a patch from SmileyChris?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin/django/contrib/admin/views/main.py

    r4617 r5122  
    396396        # value in the related table. 
    397397        lookup_order_field = self.order_field 
     398        order_type = self.order_type == 'desc' and '-' or '' 
    398399        try: 
    399400            f = self.lookup_opts.get_field(self.order_field, many_to_many=False) 
     
    406407            elif isinstance(f.rel, models.ManyToOneRel): 
    407408                rel_ordering = f.rel.to._meta.ordering and f.rel.to._meta.ordering[0] or f.rel.to._meta.pk.column 
     409                if rel_ordering[0] == '-': 
     410                    rel_ordering = rel_ordering[1:] 
     411                    order_type = not order_type and '-' or '' 
    408412                lookup_order_field = '%s.%s' % (f.rel.to._meta.db_table, rel_ordering) 
     413                # FIXME: Must use select_related() becuase the lookup field may 
     414                # be in a table not otherwise referenced yet. 
     415                qs = qs.select_related() 
    409416 
    410417        # Set ordering. 
    411         qs = qs.order_by((self.order_type == 'desc' and '-' or '') + lookup_order_field) 
     418        qs = qs.order_by(order_type + lookup_order_field) 
    412419 
    413420        # Apply keyword searches.