diff options
| author | Jani Tiainen <jani@tiainen.cc> | 2019-03-19 17:51:35 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-03-24 20:43:56 +0100 |
| commit | 044cc544203fdcf2601ff200547ecae2e51a5db5 (patch) | |
| tree | 7d49cb5ff82b7368e39456752ceab3ec8bc480bd /django | |
| parent | ea60b7bc7464808e34e3cb0aac04455fdd8545eb (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.py | 3 | ||||
| -rw-r--r-- | django/contrib/admin/views/main.py | 2 |
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): |
