From 044cc544203fdcf2601ff200547ecae2e51a5db5 Mon Sep 17 00:00:00 2001 From: Jani Tiainen Date: Tue, 19 Mar 2019 17:51:35 +0200 Subject: Fixed #30259 -- Added support for admin_order_field attribute on properties in ModelAdmin.list_display. --- django/contrib/admin/templatetags/admin_list.py | 3 +++ django/contrib/admin/views/main.py | 2 ++ 2 files changed, 5 insertions(+) (limited to 'django') 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): -- cgit v1.3