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.
This commit is contained in:
parent
c3d5160e61
commit
0cccbba694
2 changed files with 22 additions and 5 deletions
|
|
@ -509,6 +509,8 @@ class AddressFilter(FilterSet):
|
||||||
|
|
||||||
|
|
||||||
class BaseAutocompleteFilter(SimpleListFilter):
|
class BaseAutocompleteFilter(SimpleListFilter):
|
||||||
|
template = "admin/autocomplete_filter.html"
|
||||||
|
|
||||||
def lookups(self, request, model_admin):
|
def lookups(self, request, model_admin):
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
|
|
@ -516,14 +518,18 @@ class BaseAutocompleteFilter(SimpleListFilter):
|
||||||
url = reverse(
|
url = reverse(
|
||||||
f"admin:{changelist.opts.app_label}_{self.parameter_name}_autocomplete"
|
f"admin:{changelist.opts.app_label}_{self.parameter_name}_autocomplete"
|
||||||
)
|
)
|
||||||
qs = changelist.get_query_string(remove=[self.parameter_name])
|
current = changelist.params.get(self.parameter_name, "")
|
||||||
val = changelist.params.get(self.parameter_name, "")
|
|
||||||
html = (
|
html = (
|
||||||
f'<input type="hidden" class="django-autocomplete admin-autocomplete-filter" '
|
f'<input type="hidden" '
|
||||||
f'data-autocomplete-url="{url}" name="{self.parameter_name}" value="{val}"/>'
|
f'class="django-autocomplete admin-autocomplete-filter" '
|
||||||
|
f'data-autocomplete-url="{url}" '
|
||||||
|
f'name="{self.parameter_name}" '
|
||||||
|
f'value="{current}"/>'
|
||||||
)
|
)
|
||||||
# noinspection DjangoSafeString
|
# noinspection DjangoSafeString
|
||||||
yield {"query_string": qs, "display": mark_safe(html)}
|
yield {
|
||||||
|
"display": mark_safe(html),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class BrandAdminFilter(BaseAutocompleteFilter):
|
class BrandAdminFilter(BaseAutocompleteFilter):
|
||||||
|
|
|
||||||
11
core/templates/autocomplete_filter.html
Normal file
11
core/templates/autocomplete_filter.html
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{% comment %}
|
||||||
|
A custom filter template that
|
||||||
|
only cares about our `display` key.
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
<div class="module filter-{{ spec.parameter_name|slugify }}">
|
||||||
|
<h3>{{ spec.title }}</h3>
|
||||||
|
{% for choice in spec.choices cl %}
|
||||||
|
{{ choice.display|safe }}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
Loading…
Reference in a new issue