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. --- tests/admin_views/admin.py | 2 +- tests/admin_views/models.py | 5 +++++ tests/admin_views/tests.py | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index 0b0ad41e2e..3e8df5b7c2 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -104,7 +104,7 @@ class ArticleAdmin(admin.ModelAdmin): list_display = ( 'content', 'date', callable_year, 'model_year', 'modeladmin_year', 'model_year_reversed', 'section', lambda obj: obj.title, - 'order_by_expression', + 'order_by_expression', 'model_property_year', ) list_editable = ('section',) list_filter = ('date', 'section') diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index d134b34923..aaf86ea1cd 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -55,6 +55,11 @@ class Article(models.Model): model_year_reversed.admin_order_field = '-date' model_year_reversed.short_description = '' + def property_year(self): + return self.date.year + property_year.admin_order_field = 'date' + model_property_year = property(property_year) + class Book(models.Model): """ diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 3acbc3d7ed..87835eb37b 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -344,6 +344,25 @@ class AdminViewBasicTest(AdminViewBasicTestCase): "Results of sorting on callable are out of order." ) + def test_change_list_sorting_property(self): + """ + Sort on a list_display field that is a property (column 10 is + a property in Article model). + """ + response = self.client.get(reverse('admin:admin_views_article_changelist'), {'o': 10}) + self.assertContentBefore( + response, + 'Oldest content', + 'Middle content', + 'Results of sorting on property are out of order.', + ) + self.assertContentBefore( + response, + 'Middle content', + 'Newest content', + 'Results of sorting on property are out of order.', + ) + def test_change_list_sorting_callable_query_expression(self): """ Query expressions may be used for admin_order_field. (column 9 is -- cgit v1.3