ListView which can be searchable, paginate and which doesn't lose query parameter and page number
This library need jQuery ( and Bootstrap for the frond-end ) To install it in your vitualenv on your django project
pip install django-search-listview
INSTALLED_APPS = [
...
'search_listview',
]
from search_listview.list import SearchableListView
class ListDevicePaginate(SearchableListView):
model = Device
template_name = "tests/list.html"
paginate_by = 10
from search_listview.list import SearchableListView
class ListDeviceSearchablePaginate(SearchableListView):
model = Device
template_name = "tests/list.html"
paginate_by = 10
searchable_fields = ["inventory_number", "model_device", "model_device__brand__provider",
"model_device__brand__name"]
specifications = {
"model_device__brand__name": "__icontains"
}
Put the parameter for the query in searchable_fields which will be use to filter the queryset. The specifications which be use in the same way.
- Where you want the pagination and the search box
<div class="row">
{% include "search_listview/search_and_page.html" %}
</div>
- In the footer
<!--Need jQuery-->
<script src="{% static 'search_listview/js/search_listview.js' %}"></script>
<script>
start_search()
</script>
Now you have a beautifull box with all the fields you need.