From 08dc89ef193fcdacacd9d75ed24851a8ff043385 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 1 Jul 2025 18:29:25 +0300 Subject: [PATCH] Features: 1) Update AutocompleteListFilter to dynamically display field label in placeholder using blocktrans; 2) Enhance `choices` method with `field_label` for improved context; Fixes: 1) Remove redundant jQuery UI script and CSS imports for optimization; Extra: 1) Minor formatting adjustments for readability; 2) Replace variable `base_url` with `base` for naming consistency; 3) Improve `expected_parameters` method to return list format. --- core/admin.py | 29 ++++++++++--------- .../admin/autocomplete_list_filter.html | 8 ++--- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/core/admin.py b/core/admin.py index 3feacb12..efd40599 100644 --- a/core/admin.py +++ b/core/admin.py @@ -43,14 +43,15 @@ class RelatedAutocompleteFilter(FieldListFilter): def __init__(self, field, request, params, model, model_admin, field_path): super().__init__(field, request, params, model, model_admin, field_path) - self.lookup_kwarg = f"{field_path}__{field.target_field.name}__exact" - self.lookup_val = params.get(self.lookup_kwarg, "") + self.lookup_val = params.get(self.lookup_kwarg, "") + + self.field_label = field.verbose_name remote_opts = field.remote_field.model._meta - base_url = reverse("admin:autocomplete") + base = reverse("admin:autocomplete") self.autocomplete_url = ( - f"{base_url}" + f"{base}" f"?app_label={remote_opts.app_label}" f"&model_name={remote_opts.model_name}" f"&field_name={field.name}" @@ -58,23 +59,23 @@ class RelatedAutocompleteFilter(FieldListFilter): ) def expected_parameters(self): - return f"{self.field_path}__{self.field.target_field.name}__exact" + key = f"{self.field_path}__{self.field.target_field.name}__exact" + return [key] def has_output(self): return True def choices(self, changelist): yield { - "selected": bool(self.lookup_val), - "query_string": changelist.get_query_string( - ({self.lookup_kwarg: self.lookup_val} - if self.lookup_val else {}), - [] - ), - "display": _("—"), + "selected": bool(self.lookup_val), + "query_string": changelist.get_query_string( + ({self.lookup_kwarg: self.lookup_val} if self.lookup_val else {}), [] + ), + "display": _("—"), "autocomplete_url": self.autocomplete_url, - "lookup_kwarg": self.lookup_kwarg, - "lookup_val": self.lookup_val, + "lookup_kwarg": self.lookup_kwarg, + "lookup_val": self.lookup_val, + "field_label": self.field_label, } diff --git a/core/templates/admin/autocomplete_list_filter.html b/core/templates/admin/autocomplete_list_filter.html index 57a05f94..c48f4ede 100644 --- a/core/templates/admin/autocomplete_list_filter.html +++ b/core/templates/admin/autocomplete_list_filter.html @@ -7,17 +7,13 @@ - - - - +