summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJani Tiainen <jani@tiainen.cc>2019-03-19 17:51:35 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-03-24 20:43:56 +0100
commit044cc544203fdcf2601ff200547ecae2e51a5db5 (patch)
tree7d49cb5ff82b7368e39456752ceab3ec8bc480bd /django
parentea60b7bc7464808e34e3cb0aac04455fdd8545eb (diff)
Fixed #30259 -- Added support for admin_order_field attribute on properties in ModelAdmin.list_display.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/templatetags/admin_list.py3
-rw-r--r--django/contrib/admin/views/main.py2
2 files changed, 5 insertions, 0 deletions
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index b03e4b6470..fe4249ae5b 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -128,6 +128,9 @@ def result_headers(cl):
continue
admin_order_field = getattr(attr, "admin_order_field", None)
+ # Set ordering for attr that is a property, if defined.
+ if isinstance(attr, property) and hasattr(attr, 'fget'):
+ admin_order_field = getattr(attr.fget, 'admin_order_field')
if not admin_order_field:
is_field_sortable = False
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 978910df26..7d8d33d9d7 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -264,6 +264,8 @@ class ChangeList:
attr = getattr(self.model_admin, field_name)
else:
attr = getattr(self.model, field_name)
+ if isinstance(attr, property) and hasattr(attr, 'fget'):
+ attr = attr.fget
return getattr(attr, 'admin_order_field', None)
def get_ordering(self, request, queryset):