From 0cccbba694b175929e4529fac6c1775eadf210ab Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 1 Jul 2025 15:27:09 +0300 Subject: [PATCH] Features: 1) Add `template` attribute to `BaseAutocompleteFilter` for custom rendering; 2) Introduce `autocomplete_filter.html` template for enhanced filter display; Fixes: 1) Correct parameter name value extraction to use `current` in `BaseAutocompleteFilter`; Extra: 1) Refactor HTML rendering in `BaseAutocompleteFilter` for readability; 2) Add comments to explain purposes in the new template. --- core/filters.py | 16 +++++++++++----- core/templates/autocomplete_filter.html | 11 +++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 core/templates/autocomplete_filter.html diff --git a/core/filters.py b/core/filters.py index 5afc9c4c..a7c57f7e 100644 --- a/core/filters.py +++ b/core/filters.py @@ -509,6 +509,8 @@ class AddressFilter(FilterSet): class BaseAutocompleteFilter(SimpleListFilter): + template = "admin/autocomplete_filter.html" + def lookups(self, request, model_admin): return () @@ -516,14 +518,18 @@ class BaseAutocompleteFilter(SimpleListFilter): url = reverse( f"admin:{changelist.opts.app_label}_{self.parameter_name}_autocomplete" ) - qs = changelist.get_query_string(remove=[self.parameter_name]) - val = changelist.params.get(self.parameter_name, "") + current = changelist.params.get(self.parameter_name, "") html = ( - f'' + f'' ) # noinspection DjangoSafeString - yield {"query_string": qs, "display": mark_safe(html)} + yield { + "display": mark_safe(html), + } class BrandAdminFilter(BaseAutocompleteFilter): diff --git a/core/templates/autocomplete_filter.html b/core/templates/autocomplete_filter.html new file mode 100644 index 00000000..2dbc753d --- /dev/null +++ b/core/templates/autocomplete_filter.html @@ -0,0 +1,11 @@ +{% comment %} +A custom filter template that +only cares about our `display` key. +{% endcomment %} + +
+

{{ spec.title }}

+ {% for choice in spec.choices cl %} + {{ choice.display|safe }} + {% endfor %} +