0
0
mirror of https://github.com/wagtail/wagtail.git synced 2024-12-01 11:41:20 +01:00

Retain filter params in ModelAdmin's search form

This basically uses the same code as django uses for the search form in
its ModelAdmin, to retain the current query params (template
admin/search_form.html).

Fixes #6006
This commit is contained in:
Stefan Hammer 2022-09-15 11:29:50 +02:00 committed by LB (Ben Johnston)
parent 0fd2d3d4c1
commit 80585e68c2
4 changed files with 13 additions and 0 deletions

View File

@ -29,6 +29,7 @@ Changelog
* Fix: Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
* Fix: Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
* Fix: Support `formfield_callback` handling on `ModelForm.Meta` for future Django 4.2 release (Matt Westcott)
* Fix: Ensure that `ModelAdmin` correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
4.0.2 (xx.xx.xxxx) - IN DEVELOPMENT

View File

@ -41,6 +41,7 @@ Wagtail 4.1 is designated a Long Term Support (LTS) release. Long Term Support r
* Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
* Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
* Support `formfield_callback` handling on `ModelForm.Meta` for future Django 4.2 release (Matt Westcott)
* Ensure that `ModelAdmin` correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
## Upgrade considerations

View File

@ -6,5 +6,9 @@
<input id="id_q" name="{{ search_var }}" value="{{ view.query }}" placeholder="{% blocktrans trimmed with view.verbose_name_plural|lower as name %}Search {{ name }}{% endblocktrans %}" type="text">
{% endfield %}
<button type="submit" class="w-sr-only">{% trans 'Search' %}</button>
{# Keep all parameters from the query string (e.g. filter state). #}
{% for name, value in view.params.items %}
{% if name != search_var %}<input type="hidden" name="{{ name }}" value="{{ value }}">{% endif %}
{% endfor %}
</form>
{% endif %}

View File

@ -156,6 +156,13 @@ class TestBookIndexView(TestCase, WagtailTestUtils):
response, '<span class="result-count">2 out of 4</span>', html=True
)
# The search form should retain the filter
self.assertContains(
response,
'<input type="hidden" name="author__id__exact" value="1">',
html=True,
)
for book in response.context["object_list"]:
self.assertEqual(book.author_id, 1)