summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAndreas Pelme <andreas@pelme.se>2018-02-16 03:00:31 +0100
committerTim Graham <timograham@gmail.com>2018-02-15 21:00:31 -0500
commite307ff29d28737d5a764ce2fa7db010231d6fc8e (patch)
treeac6cf4a88d36e5cb5de2c7a28f32a55ded650bfa /django
parentd368784bacc7e58b426f29937ee842aa14d439ad (diff)
Fixed #27810 -- Allowed query expressions in admin_order_field.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/views/main.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 761ed3a754..fa7b2a6036 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -286,8 +286,11 @@ class ChangeList:
order_field = self.get_ordering_field(field_name)
if not order_field:
continue # No 'admin_order_field', skip it
+ if hasattr(order_field, 'as_sql'):
+ # order_field is an expression.
+ ordering.append(order_field.desc() if pfx == '-' else order_field.asc())
# reverse order if order_field has already "-" as prefix
- if order_field.startswith('-') and pfx == "-":
+ elif order_field.startswith('-') and pfx == '-':
ordering.append(order_field[1:])
else:
ordering.append(pfx + order_field)