Index: main.py
===================================================================
--- main.py	(revision 11434)
+++ main.py	(working copy)
@@ -63,7 +63,7 @@
         if ERROR_FLAG in self.params:
             del self.params[ERROR_FLAG]
 
-        self.order_field, self.order_type = self.get_ordering()
+        self.order_field, self.order_type, self.ordering = self.get_ordering()
         self.query = request.GET.get(SEARCH_VAR, '')
         self.query_set = self.get_query_set()
         self.get_results(request)
@@ -138,10 +138,8 @@
         # manually-specified ordering from the query string.
         ordering = self.model_admin.ordering or lookup_opts.ordering or ['-' + lookup_opts.pk.name]
 
-        if ordering[0].startswith('-'):
-            order_field, order_type = ordering[0][1:], 'desc'
-        else:
-            order_field, order_type = ordering[0], 'asc'
+        order_field = None
+        order_type = None
         if ORDER_VAR in params:
             try:
                 field_name = self.list_display[int(params[ORDER_VAR])]
@@ -166,7 +164,7 @@
                 pass # Invalid ordering specified. Just use the default.
         if ORDER_TYPE_VAR in params and params[ORDER_TYPE_VAR] in ('asc', 'desc'):
             order_type = params[ORDER_TYPE_VAR]
-        return order_field, order_type
+        return order_field, order_type, ordering
 
     def get_query_set(self):
         qs = self.root_query_set
@@ -216,6 +214,8 @@
         # Set ordering.
         if self.order_field:
             qs = qs.order_by('%s%s' % ((self.order_type == 'desc' and '-' or ''), self.order_field))
+        elif self.ordering:
+            qs = qs.order_by(*self.ordering)
 
         # Apply keyword searches.
         def construct_search(field_name):
