Как создать пользовательскую панель поиска с фильтром в django?

Я пытаюсь создать панель поиска по фильтру, которую я могу настраивать. Например, вот представление:

class StudentListView(FilterView):
    template_name = "leads/student_list.html"
    context_object_name = "leads"
    filterset_class = StudentFilter

    def get_queryset(self):
        return Lead.objects.all()

и вот мой filters.py: class

StudentFilter(django_filters.FilterSet):
    class Meta:
        model = Lead
        fields = {
            'first_name': ['icontains'],
            'email': ['exact'],
        }

До сих пор я могу создать только строку поиска фильтра, которая может предоставить список экземпляров, соответствующих first_name или email (которые являются полями в модели Lead). Однако теперь это позволяет мне выполнять более сложные задачи. Допустим, я добавил time к полям фильтра, и я хотел бы не только фильтровать модель Lead со значением time, которое я представил, но и другие экземпляры Lead, которые имеют значение time, близкое к тому, которое я представил. В принципе, я хочу что-то вроде def form_valid(), используемое в представлениях, где я могу запрашивать, вычислять и даже изменять представленные значения.

Более того, если возможно, я хотел бы создать поле фильтра, которое не обязательно является фактическим полем в модели. Затем я хотел бы использовать представленное значение для выполнения некоторых вычислений в процессе фильтрации списка экземпляров. Если у вас есть какие-либо вопросы, пожалуйста, задавайте их в комментариях. Спасибо.

Вернуться на верх