Django

Code

Changeset 7491

Show
Ignore:
Timestamp:
04/27/08 21:40:57 (2 months ago)
Author:
mtredinnick
Message:

Fixed #3002 -- Fixed a problem with ordering by related models in the admin
interface. Patch from Ramiro Morales.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/admin/views/main.py

    r7477 r7491  
    717717                        break 
    718718 
    719         # Calculate lookup_order_field. 
    720         # If the order-by field is a field with a relationship, order by the 
    721         # value in the related table. 
    722         lookup_order_field = self.order_field 
    723         try: 
    724             f = self.lookup_opts.get_field(self.order_field, many_to_many=False) 
    725         except models.FieldDoesNotExist: 
    726             pass 
    727         else: 
    728             if isinstance(f.rel, models.OneToOneRel): 
    729                 # For OneToOneFields, don't try to order by the related object's ordering criteria. 
    730                 pass 
    731             elif isinstance(f.rel, models.ManyToOneRel): 
    732                 rel_ordering = f.rel.to._meta.ordering and f.rel.to._meta.ordering[0] or f.rel.to._meta.pk.column 
    733                 lookup_order_field = '%s.%s' % (f.rel.to._meta.db_table, rel_ordering) 
    734  
    735719        # Set ordering. 
    736         qs = qs.order_by((self.order_type == 'desc' and '-' or '') + lookup_order_field) 
     720        if self.order_field: 
     721            qs = qs.order_by('%s%s' % ((self.order_type == 'desc' and '-' or ''), self.order_field)) 
    737722 
    738723        # Apply keyword searches.