I wish this help you it's difficult to say which one is better but both approaches work. Anyway at the end i finally found a better approach - is to use django-filters, which is done for filtering based on criteria.
Any of those help There is an error in your urls.py, you did not refer to the SchoolListView, but to the generic ListView itself. You can fix this by writing:
from django.urls import path
from . import views
#My name space
app_name = 'basicapp'
urlpatterns = [
# SchoolListView instead of ListView
path('', views.SchoolListListView.as_view(), name='list'),
# probably SchoolDetailView instead of DetailView, and with a pk in the url
path('details', views.DetailView.as_view(), name='details')