diff options
| author | Tim Graham <timograham@gmail.com> | 2018-06-14 14:22:04 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-06-14 14:22:04 -0400 |
| commit | 0d8e3e608ee9aab5076d497664aa97e0a29e523e (patch) | |
| tree | 803ec16cb7263dd845900185dc1eb9fd1fc6a1ac /django/contrib/admin | |
| parent | a77f21880dfb0631ea0adb22d47909915cbfc3a9 (diff) | |
Fixed #29428 -- Fixed admin changelist crash when using a query expression without asc()/desc() in the ordering.
Diffstat (limited to 'django/contrib/admin')
| -rw-r--r-- | django/contrib/admin/views/main.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index cbbe45a5c7..3febd42fb9 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -17,7 +17,7 @@ from django.core.exceptions import ( ) from django.core.paginator import InvalidPage from django.db import models -from django.db.models.expressions import F, OrderBy +from django.db.models.expressions import Combinable, F, OrderBy from django.urls import reverse from django.utils.http import urlencode from django.utils.timezone import make_aware @@ -326,7 +326,9 @@ class ChangeList: # the right column numbers absolutely, because there might be more # than one column associated with that ordering, so we guess. for field in ordering: - if isinstance(field, OrderBy): + if isinstance(field, (Combinable, OrderBy)): + if not isinstance(field, OrderBy): + field = field.asc() if isinstance(field.expression, F): order_type = 'desc' if field.descending else 'asc' field = field.expression.name |
