Используйте get парметры, для view я бы заюзал ListView написал бы свой метод get_queryset который в случае get запросов фильтрует выборку, ну и форму бы написал если там надо искать по каким нибудь периодам или мин макс. Но есть и решения типа https://github.com/liberation/django-elasticsearch там свои подходы.