diff options
| author | zeyneloz <ozdemir.zynl@gmail.com> | 2019-08-15 10:10:11 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-08-15 10:29:10 +0200 |
| commit | 8289fc55fff879df273cb95fdd1b039447f85783 (patch) | |
| tree | f1641d660e3d1b5bfb875c84a4b710f208b30b19 /django | |
| parent | 00035672a460b6eb5442d2837bc783f8af28c6f3 (diff) | |
Refs #30449 -- Made RelatedOnlyFieldListFilter respect ModelAdmin.ordering.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/filters.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/django/contrib/admin/filters.py b/django/contrib/admin/filters.py index d65e01d5e2..a9e5563c6c 100644 --- a/django/contrib/admin/filters.py +++ b/django/contrib/admin/filters.py @@ -193,11 +193,17 @@ class RelatedFieldListFilter(FieldListFilter): def expected_parameters(self): return [self.lookup_kwarg, self.lookup_kwarg_isnull] - def field_choices(self, field, request, model_admin): - ordering = () + def field_admin_ordering(self, field, request, model_admin): + """ + Return the model admin's ordering for related field, if provided. + """ related_admin = model_admin.admin_site._registry.get(field.remote_field.model) if related_admin is not None: - ordering = related_admin.get_ordering(request) + return related_admin.get_ordering(request) + return () + + def field_choices(self, field, request, model_admin): + ordering = self.field_admin_ordering(field, request, model_admin) return field.get_choices(include_blank=False, ordering=ordering) def choices(self, changelist): @@ -419,4 +425,5 @@ FieldListFilter.register(lambda f: True, AllValuesFieldListFilter) class RelatedOnlyFieldListFilter(RelatedFieldListFilter): def field_choices(self, field, request, model_admin): pk_qs = model_admin.get_queryset(request).distinct().values_list('%s__pk' % self.field_path, flat=True) - return field.get_choices(include_blank=False, limit_choices_to={'pk__in': pk_qs}) + ordering = self.field_admin_ordering(field, request, model_admin) + return field.get_choices(include_blank=False, limit_choices_to={'pk__in': pk_qs}, ordering=ordering) |
